数组和指针密切相关,有时可以互换使用。数组名称是数组指针。例如,要读取char
数组的字符串:
char multiple[10];
scanf_s("%s", multiple, sizeof(multiple));
这里没有使用&
运算符,使用数组名称就像一个指针。没有索引值的数组名称是指数组中第一个元素的地址。
我们无法更改数组名称引用的地址。以下代码显示数组名称本身是指地址:
#include <stdio.h>
int main(void)
{
char multiple[] = "My string";
char *p = &multiple[0];
printf("第一个数组元素的地址是: %p\n", p);
p = multiple;
printf("从数组名称获取的地址: %p\n", multiple);
return 0;
}
执行上面示例代码,得到以下结果:
hema@yiibai:~/book$ ./a.out
第一个数组元素的地址是: 0x7fffdccbc3de
从数组名称获取的地址: 0x7fffdccbc3de
可以看到表达式&multiple[0]
与表达式multiple
的值相同。multiple
计算数组第一个字节的地址,&multiple[0]
计算结果第一个元素的第一个字节。