我正在使用C ++来了解指针的工作原理。我有一段使用数组的代码,我只是用来了解等效项如何与指针一起工作。int main() {
int arr[10] = {1,2,3};
char arr2[10] = {'c','i','a','o','\0'};
cout << arr << endl;
cout << arr2 << endl;}但是,当我运行此命令时,arr输出int数组的第一个元素的地址(如预期的那样),但arr2不输出chars数组的第一个元素的地址;它实际上会打印“ ciao”。我想念的还是尚未了解的是什么?
3 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
for const void*
和for的重载是operator << const char*
。您的char数组将转换为const char*
并传递给该重载,因为它比to更适合const void*
。但是,将int数组转换const void*
为该版本并传递给该版本。运算符<<的版本const void*
仅输出地址。const char*
实际接受版本的版本将其视为C字符串,并输出每个字符,直到终止的空字符为止。如果不希望这样,则在将char数组const void*
传递给operator <<时将其显式转换为:
cout << static_cast<const void*>(arr2) << endl;
- 3 回答
- 0 关注
- 960 浏览
添加回答
举报
0/150
提交
取消