数组与指针有许多相似的地方,同时也有很多联系。
首先,数组名是数组第一个元素的地址。通过指向数组的指针便可以轻松调取里面的值。
指向数组的指针
因为指针存放的是地址,而数组名是数组第一个元素的地址,所以让指针指向数组只需要让指针指向数组第一个元素的地址,方法如下:
int a[128];
char *p;
p = a; 或 p = &a[0];
指针的运算
指针指向数组元素时,对指针变量进行运算,可以指向指针当前位置的前或者后的第n个元素。
实验演示
下面的程序展示了上面提到的实际效果。
#include <stdio.h>
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9};
char str[128];
int *p;
p = &a[0];
printf("请输入:");
scanf("%s",str);
printf("刚才输入的字符是:%s\n",str);
printf("字符串 str 的地址是:%p\n",str);
printf("字符串 str 的地址是:%p\n",&str[0]);
printf("字符串 str 的地址是:%p\n",&str[1]);
printf("字符串 int 的地址是:%p\n",&a[0]);
printf("字符串 int 的地址是:%p\n",&a[1]);
printf("*p = %d,*(p+1) = %d\n",*p,*(p+1));
printf("*p地址 = %p\n",p);
printf("*(p+1)地址 = %p\n",(p+1));
}