赞
踩
目录
首先定义一个数组,并为其初始化数据,再定义一个变量用于保存数组的下标。
- int arr[5]={1,2,3,4,5};
-
- int i=0; //保存数组下标
数组名代表数组元素的首地址,即arr(arr+0)的值代表&arr[0],由此可推出,arr+1 的值等于&arr[1]、arr+2的值等于&arr[2]、arr+3的值等于&arr[3]、arr+4的值为&arr[4]。
而arr[0]的值也可以通过 *(arr + 0)来得到。
以此类推:arr[i]的值可以通过*(arr+ i)来得到。
总结:通过数组的首地址来引用数组元素有两种方法:
①数组名[下标] ②*(数组名 + 下标)
- for(i=0;i<5;i++) //遍历数组
-
- printf("arr[%d]=%d\n",i,arr[i]);
- for(i=0;i<5;i++) //遍历数组
-
- printf("arr[%d]=%d\n",i,*(arr+i));
- int arr[5] = {1,2,3,4,5};
-
- int *p ;
-
- p = arr;//数组名代表数组的首地址
-
- printf("%d\n",*p);//用指针访问数组的0号元素
-
- p++;
-
- printf("%d\n",*p);//用指针访问数组的1号元素
通过上述原理,可写出以下代码:
若有以下定义和语句:
int *p,s[10],i;
p = s;
经过前面的学习,我们已经知道可以用三种方法去表示s[i]的地址,分别是&s[i],s+i以及p+i。
很明显:s[i]可以用表达式*(s + i)来表示。
同理:*(p + i)也可以用p[i]来表示
- int arr[5]={1,2,3,4,5};
- int *p,i;
- p=arr;
-
- for(i=0;i<5;i++) //遍历数组
- printf("arr[%d]=%d\n",i,p[i]);
因此当p指向s数组的数组的首地址是,表示数组元素s[i]的表达式有四种:
①:s[i] ②:*(s + i) ③:*(p +i) ④:p[i]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。