gom*_*son 2 c c++ pointer-arithmetic
关于数组和指向数组的指针,我有一个相当简单的问题.考虑这段代码片段..
int (*ptr)[3]; //A pointer to an array of 3 ints
int arr1[3] = {2,4,6,};
ptr = &arr1; //ptr now points to arr1
//3 different ways to express the same address
cout << &arr1 << "\t" << arr1 << "\t" << &arr1[0] << endl;
Run Code Online (Sandbox Code Playgroud)
现在如果:
&arr1 == arr1 == &arr1[0]..
Run Code Online (Sandbox Code Playgroud)
为什么这段代码不正确:
ptr = arr1;
Run Code Online (Sandbox Code Playgroud)
要么
ptr = &arr1[0];
Run Code Online (Sandbox Code Playgroud)
这一直让我发疯...所以请任何解释将不胜感激.另外请不要这不是一个家庭作业问题,只是我想要抓住的东西.
在
ptr = arr1;
Run Code Online (Sandbox Code Playgroud)
arr1转换为a int*,因此您尝试从不兼容的指针类型进行分配.&arr1[0]是直接的int*,没有转换,所以再次不兼容.
&arr1 == arr1 == &arr1[0]
Run Code Online (Sandbox Code Playgroud)
是错误的,因为实体有不同的类型.它们只指向相同的地址,因此在打印时,它们会给出相同的结果.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |