<分区>
file 1:
int mango[100];
file 2:
extern int *mango;
...
/* some code that references mango[i] */
当两者都作为 *(mango+i)
访问时,为什么我们会出错?
此外,如果 char mango[5];
则数组从位置 mango 开始,这样 mango=&mango[0]
。所以变量 'mango' 包含指向自身的地址或数组的第一个字符?
<分区>
file 1:
int mango[100];
file 2:
extern int *mango;
...
/* some code that references mango[i] */
当两者都作为 *(mango+i)
访问时,为什么我们会出错?
此外,如果 char mango[5];
则数组从位置 mango 开始,这样 mango=&mango[0]
。所以变量 'mango' 包含指向自身的地址或数组的第一个字符?
最佳答案
如果你定义一个变量a
比如:
char a[5];
然后您定义了一个包含五 (5) 个字符的数组。可以通过a[0]
或简单地*a
访问的第一个字符的地址被命名为“a
”。该数组也称为“a
”,因为该数组是根据其第一个元素的地址命名的,正如程序员在数组声明中给出的那样。
不可能通过分配给a
来改变a
的地址。如果你试图写:
a = NULL;
您收到的错误应该表明需要一个左值(可能出现在赋值运算符左侧的值)。
关于c++ - a[i] 和 *(a+1) 处理方式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836466/