C语言指针与数组,c语言数组指针用法举例
Yyds干货库存
通过指针引用数组元素
要引用数组元素,可以使用以下两种方法:
1.下标方法,如形式a[I];
2.指针方法,如*(a i)或*(p i)。其中a是数组名,p是指向数组元素的指针变量,其初始值为p=a;
栗子1:
有一个5个元素的整数数组A,要求输出数组中的所有元素。
(1)下标法
# include stdio.h int main(){ int i,a[5];printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,a[I]);for(I=0;i i ) printf(%d ,a[I]);printf( \ n );返回0;}(2).通过数组名计算数组元素的地址,找出元素的值。
# include stdio.h int main(){ int i,a[5];printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,a[I]);//或者scanf(%d ,a I)for(I=0;i i ) printf(%d ,*(a I));printf( \ n );返回0;}(3).用指针变量指向数组元素
方法1:
# include stdio.h int main(){ int i,a[5],* p;p=a;//或者p=a[0] printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,p I);for(I=0;i i ) printf(%d ,*(p I));printf( \ n );返回0;}方法二:
# include stdio.h int main(){ int i,a[5],* p;printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,a[I]);for(p=a;p(a5);P) //错误:for(p=a;答(p 5);A) a表示数组第一个元素的地址,是指针常量printf(%d ,* p);//printf(%d ,* a);printf( \ n );返回0;}栗子2:
通过指针变量输出整数数组A的5个元素
# include stdio.h int main(){ int i,a[5],* p;p=a;printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,p);for(I=0;i i,p ) //或者for(I=0;i i ) printf(%d ,* p);//printf(%d ,* p);printf( \ n );返回0;}结果是:
问题出在指针变量P的指向上,第一次for循环后,指针P已经指向数组A的末尾,第二次for循环执行时,指向数组A下面的10个内存单元,这些单元中存储的值是不可预测的。
解决方案:
在第二个for循环前添加赋值语句:p=a。
展开:
使用while实现输出数组A的前5个元素:
# include stdio.h int main(){ int i,a[5],* p;p=a;printf(请输入5个整数:\ n );for(I=0;i i ) scanf(%d ,p);p=a;while(p a 5) printf(%d ,* p);printf( \ n );返回0;}来自,转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。