W3c*_*tor 4 c c++ memory memory-management
我尝试在C和C++中打印出数组元素的内存地址.
在C:
char array[10];
int i;
for(i =0; i<10;i++){
printf(" %p \n", &array[i]);
}
Run Code Online (Sandbox Code Playgroud)
我有足够的内存地址:0xbfbe3312,0xbfbe3313,0xbfbe3314,....
但是,如果我尝试在C++中做同样的事情:
char array[10];
for(int i =0; i<10;i++){
std::cout<<&array[i]<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个输出:
P
ķ
它为什么不同?我应该cout在C++中使用不同的方式打印出内存地址吗?我该如何打印出内存地址?
将地址转换为void*打印前,在C++ operator<<中ostream重载,(const) char*以便它认为它是一个c风格的字符串:
char array[10];
for(int i =0; i<10;i++){
std::cout << static_cast<void*>(&array[i]) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
另见我的这个答案.