动态存储器的打印地址,存储在指针数组中

时间:2013-05-16 14:38:44

标签: c++ pointers g++ dynamic-memory-allocation

如何打印存储在char*数组中的数据[在C中,我们使用%p显示地址]。

char * tokens[5];
for(int i=0;i<5;i++)
tokens[i] = new char[5];

for(int i=0;i<5;i++)
std::cout<<"Address: "<<tokens[i]<<std::endl;

/*Add data in the array*/

for(int i=0;i<5;i++)
delete[] tokens[i];

这给了我,

Address: 
Address: 
Address: 
Address: 
Address: 

我理解这一定是因为,tokens[i]是字符串的起始地址,因此cout会打印截至目前为止为空的字符串。

我需要在tokens[i]std::cout进行类型转换?

1 个答案:

答案 0 :(得分:4)

operator<<char*重载,它假设您有一个要打印的以空值终止的字符数组。将其转换为void*以获取指针的值:

std::cout << "Address: " << static_cast<void*>(tokens[i]) << std::endl;

请在此处查看运行代码:https://ideone.com/9Cst8F