利用指针完成对数组的遍历

#include<stdio.h>
main()
{
    int *p,i;//定义一个指针p,定义一个整形i
    int shuzu[38]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37};//定义一个数组shuzu[38](大小为本人学号34+4),并设定数组内元素为从0至37 p=shuzu;//让指针p指向数组开头的地址 for(i=0;i<38;i++)//定义一个for循环,让整形i从数组的开头的标号增加至结尾的标号来完成对数组的遍历 printf("a[%d]=%d\n",i,*(p+i)); //a[i]为当前数组的编号,p增加i即增加i个数组元素的大小来指向数组[i]的地址,每输出一个数组元素就换行 }

程序编译运行成功,并成功完成对数组元素的遍历

总结:

1.

p=shuzu;//让指针p指向数组开头的地址

数组名shuzu能指向该数组的首地址,它是&数组[0]的化简形式,是指针表达式,由于在作用域内这个值是不变的,所以叫做指针常量,是指针表达式的最基本形式,在数据传递时数组名代表a[0]的地址。而在使用数组元素的数组名(a[0],a[1]...)时需要通过加上&(&a[0],&a[1]...)来取地址。

2.

for(i=0;i<38;i++)
printf("a[%d]=%d\n",i,*(p+i));

在开头int shuzu[38]即在内存中开拓了大小为38*sizeof(int)的内存空间,每一个数组元素的大小为sizeof(int)即4个字节,因此在for循环中指针p每+1,即在地址上+4,因此可以指向相邻的下一个数组元素。

3.在做这一作业总结时,对我所定义的数组的数组名shuzu的类型产生了一定的疑问,一开始我直接认为shuzu就是一个指针,但在查询资料中发现了一个截然不同的说法即“数组名永远不等于指针”,然后了解到指针作为一个变量,存储着另一个量的地址,在内存中被分配了空间拥有自己的地址,而数组名却没有,它直接代表数组首地址,因此不可能作为一个指针存在,后来发现是自己搞混了指针和指针变量的概念,指针应该是一种类型的概念,而不能直接与指针变量和常量指针混为一谈,数组名是作为一种指针表达式存在,因为值不变所以是一种常量指针。

转载于:https://www.cnblogs.com/xdschoolwork/p/6518999.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值