从我的演讲幻灯片中,它指出:
如下面的代码所示,可以将数组名称分配
给适当的指针,而无需前面的&运算符.
int x;
int a[3] = {0,1,2};
int *pa = a;
x = *pa;
x = *(pa + 1);
x = *(pa + 2);
a += 2; /* invalid */
Run Code Online (Sandbox Code Playgroud)
为什么a += 2;无效?
谁能帮忙澄清一下?
如果你想到一个更好的标题,也可以自由编辑标题.
a += 2被翻译成a = a + 2.向数组添加数字与向有效指针添加数字并生成新指针的数字相同.
赋值是问题 - 数组不是左值,因此您无法为它们分配任何内容.这是不允许的.即使你可以在这里存在类型不匹配 - 你正试图分配一个指向一个没有意义的数组的指针.
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |