Luc*_*eis 14 c++ arrays pointers
我正在使用C++来理解指针是如何工作的.我有这段代码使用数组,我只是用它来理解等价物如何与指针一起工作.
int main() {
int arr[10] = {1,2,3};
char arr2[10] = {'c','i','a','o','\0'};
cout << arr << endl;
cout << arr2 << endl;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,arr输出整数数组的第一个元素的地址(如预期的那样),但arr2不输出字符数组的第一个元素的地址; 它实际上打印"ciao".
我错过了什么或者我还没有学到这个?
Joh*_*itb 29
这是运算符<<为了重载const void*而为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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23839 次 |
| 最近记录: |