!!!注意:因为简书的显示格式缘故,所以“ * ”显示会出现问题,可能有些星号由于疏忽未改动格式,造成没有显示,请多多包含,如有错误,请留言或联系本人更正,谢谢!
指针和数组
1.1通过指针得到整个数组:由于数组是由各个具有相同性质的数组元素按照一定顺序排布的集合,而每个数组元素都占一定的内存空间,且由数据结构知识可知,数组元素在内存中的排布是连续的。因此,只要知道数组的首地址,那么整个数组就可以被知晓。由此可知,只需要将指针指向数组首地址,就可以按照地址顺序知道整个数组。
1.2数组元素的指针:即为指向数组元素的指针(换句话说,就是数组元素的地址)。见例1
//例1,定义一个指向数组元素的指针变量
int a[5] = {1,2,3,4,5}; //定义数组a
int *p; //定义指针变量p
p = &a[2]; //将数组a的第三个元素的地址赋给p(即p中存储数组a的第三个元素的地址)
引用数组元素的方法:1)下标法,如a[i]; 2)指针法,如(a+i)或(p+ i)。(注:i为第i+1个元素)
//例2
/#include
void main()
{
int a[5] = {1,2,3,4,5};
int *p, i;
p = a; //这里a是数组名,p是指向数组元素的指针变量,注意:数组名即“翻译成数组的第一个元素的地址!因此将数组的第一个元素的地址赋给p,后面的数组元素就可以通过地址+1得到。
//p = &a[0]; //这也是同样道理,因为a[0]的地址即为数组的首地址。
for(i = 0; i < 5; i++)printf("%d ", *(p + i));
printf("\n");
}
例题:假设有一个a数组,整型,有10个元素。要输出各元素的值有三种方法,见例3.
(1) 下标法
(2) 通过数组名计算数组元素地址,找出元素的
值。
(3) 用指针变量指向数组元素。
//例3
/#include
void main()
{
int a[5] = {1,2,3,4,5};
int *p, i;
for(i = 0; i < 5; i++)printf("第一种方法:%d ", a[i]);
printf("\n");
for(i = 0; i < 5; i++)printf