c++ - a[i] 和 *(a+1) 处理方式的区别

标签 c++ c arrays pointers

<分区>

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/

相关文章:

php - 通过附加值合并 2 个数组

c++ - 不扔是零成本的时候,noexcept 是不是没用?

c++ - 将元组传递给辅助类

c++ - 从 std::string 中提取(第一个)UTF-8 字符

c - 如何从头文件 C 中声明的结构打印值(高度/宽度)

c - 有没有办法在不先读取磁盘扇区的情况下将几个字节写入磁盘扇区?

c - 从c中的文件中读取文本

c++ - 跨文件的代码组织,这些文件必须处理模板功能和内联

python - 在不使用列表理解的情况下更改已过滤的二维数组中的元素,同时保留对原始数组的引用

Javascript for循环写入未定义的数组