C语言数组指针的使用方法

一维数组指针

一维数组的指针是直接将一维数组的首地址赋予指针变量,之后通过指针变量的运算逐渐输出一维数组中的各个元素的值。
例如:int a[20];
int *p;
因为数组名相当于一个指针指向的就是一维数组的首地址(例如a[0]),所以可以直接将数组名赋予指针变量(例如p=a),无需加取地址符&;也可以让指针变量指向第一个元素的地址(例如p=&a[0]);即p=a与p=&a[0]是等价的,(应当要注意的是:p=a是将数组首元素的地址赋给指针变量,而非将数组a的各元素的值赋给指针变量)
如果一个指针变量p已经指向数组中的一个元素,则p+1指向数组中的下一个元素,p-1指向的是数组中的上一个元素。(注意:执行P+1或P-1时,并不是将P的值简单的加1,而是加上一个数组元素所占用的字节数,例如:float型,每个元素占4个字节,所以p+1意味着使p的地址加4个字节,以便让其指向下一个元素)
这里的a+i与p+i是等价的,也可以用数组名进行运算;
e

*(a+i)==*(p+i);

二维数组指针

令int a[2][3]={{1,2,3},{4,5,6}}
在二维数组中数组名指向数组的首元素,但是不是简单的表示一个简单的元素,而是由多个元素所组成的一维数组,因此数组名指的是二维数组首行(即下标为0的那一行)的首地址,a+1即表示下标为1的那一行元素,又因为数组名代表首元素的地址,所以a即代表二维数组中a[0][0]的值,a+1即a[1][0]的值。a[0]等价于*(a+0),a[1]等价于*(a+1),(a+1)+1的值即&a[1][1]。要想得到a[1][1]的值,就要再进行取值,即(a[1]+1)或*((a+1)+1)为a[1][1]的值。(注意:(a+i)与a[i]是等价的)
切记二维数组名是指向二维数组首行,而非指向二维数组a[0][0];
二维数组在指向行的指针前加*,就转化为了指向列的指针,反之,在二维数组指向列的指针前加&,就转化为了指向行的指针.(例如:&a[i]或a+i指向行.而a[i]或*(a+i)则指向列)
在定义时的int (*p)[4]的意思是指针变量p指向包含四个整型元素的一维数组,即在二维数组中一共有四行元素。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秦愿鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值