首页 > 解决方案 > 数组类型的变量或表达式的值是数组元素零的地址

问题描述

我正在阅读 K&R 编程语言 2ed。在第 5.3 节(第 99 页)中:

根据定义,数组类型的变量或表达式的值是数组元素零的地址。

它告诉我们,如果我声明一个数组:

int arr[3];

arr 的值是数组第一个元素的地址的默认值。

我试图在 gcc 中设置一个实验:

int arr[3] = {0, 1, 2};
printf("%p",arr);

输出仍然是数组的第一个元素的地址,尽管我已将其更改为 0。

为什么?

标签: arrays

解决方案


这是因为变量arr本身是一个指针,它具有指向第一个元素的地址{0, 1, 2}

相当于这样做:

int a = 0;
int b = 1;
int c = 2;

printf("%p", &a);

%p也打印指针指向的地址。(我知道,这听起来很混乱)


推荐阅读