【指针与一维数组】

重点掌握:a[i]   p[i]   *(p+i)  *(a+i)这几种元素的表示方式

一、数组与指针

1.概念复习

(1)在C语言中,数组的指针是指 :数组在内存中的起始地址

         数组元素的地址是指:数组元素在内存中的起始地址(因为指针的定义就是地址单元)

(2)一维数组的数组名为一维数组的指针(起始地址)

         例如 double   x[8]; 因此,x为x数组的起始地址

2.指针与一维数组的关系

(1)设指针变量px的地址值等于数组指针x(即指针变量px指向数组的首元素),

      则: x[i] 、*(px+i)、*(x+i) 和px[i]具有完全相同的功能:访问数组第i+1个数组元素。

 分析:x[i]这种形式是通过下标的方式对下标为i的元素进行引用,px指向数组的首地址,px+i是移动i个数据空间地址,然后用*(px+i)引用该地址上的数据,因为x数组名也是代表该数组的地址,因此相似于p,可得*(x+i),通过*(px+i)和*(x+i),又可推出px[i];

通过代码验证了这四种方式表示的数据是完全相同的;

所以

注意:指针变量和数组在访问数组中元素时,一定条件下其使用方法具有相同的形式,因为指针变量和数组名都是地址量 但指针变量和数组的指针(或叫数组名)在本质上不同,指针变量是地址变量,而数组的指针是地址常量;

(2)指针变量和数组指针的本质不同

常量是一个在程序运行期间不可更改的值。因此,地址常量也是不可更改的。地址常量是一个在程序中表示内存地址的固定值。这个值在程序运行期间是不可修改的。如果试图修改一个地址常量的值,程序将会产生错误。

数组名是地址常量

p++,p--     (对)   因为指针存储的是地址变量;

a++,a--     (错)   a++是a=a+1的缩写形式,这个表达式表示将变量a的值加1,并将结果赋给变量a,这个过程中,变量a的值发生了变化,如果程序中有类似操作,可能或警告甚至报错;

a--同理;

a+1, *(a+2) (对) 这个表达式表示返回加a+1后的结果。但是,这个过程中,变量a的值并没有发生变化,仅仅是调用了一下a的值然后+1,得到这个操作后的值,相当于可以理解为把a地址作为一个基准或者跳板;

3.代码应用(程序举例)

(1)编写一个函数,将整形数组中n个数按反序存放:

(2)指针++细节注意

分析:

在p++后存储的地址已经是“7”的地址了,所以这时p存储的地址是a[1]的地址,这时p[1]即使(*(p+1))就等于a[2]了 ;


总结与思考

主要介绍了C语言中,指针如何访问一维数组 思考 当指针与数组结合在一起使用时,数组的元素有多少种表示方法?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛的守护神_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值