通过指针我们可以访问内存中任意地址,那么自然可以访问数组,因为数组在内存中占据了一段连续的空间,那么如何实现的呢?
1 #include<stdio.h> 2 3 int main(){ 4 //定义一个整型数组 5 int array[4] = {7,15,3,9}; 6 //定义一个整型的指针 7 int *p; 8 //将数组的首元素地址赋值给指针p 9 p = &array[0]; 10 //打印出指针所指内存单元的值 11 printf("指针所指内存单元的值为%d\n",*p); 12 return 0; 13 }
运行结果:
代码的第9行是将数组的第0号位置的元素地址赋值给指针p,由于C中规定数组名代表数组首地址,也就是首元素的地址,所以第9行代码也可换成
p = array;
那么有些人就会疑问了,我要是想访问数组中其他元素呢?是不是还得定义另一个指针变量,让需要被访问的元素地址赋值给这个新的指针呢?答案是不需要
实际上从上面的p = array;代码中就能看出一些端倪,因为我们用array[2]时能直接访问数组的第2号元素,那么是不是可以用p[2]这种形式间接访问呢?
1 #include<stdio.h> 2 3 int main(){ 4 //定义一个整型数组 5 int array[4] = {7,15,3,9}; 6 //定义一个整型的指针并初始化 7 int *p = array; 8 //利用指针遍历整个数组 9 for (int i = 0; i < 4; i++) { 10 printf("第%d号元素为:%d\n",i, p[i]); 11 } 12 13 return 0; 14 }
运行结果为
原文:http://www.cnblogs.com/oucding/p/4396891.html