易百教程

数组和指针

数组和指针密切相关,有时可以互换使用。数组名称是数组指针。例如,要读取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]计算结果第一个元素的第一个字节。