c语言指针引用数组元素,c语言——数组指针和通过指针引用数组元素的方法总结...

1.数组指针:即指向数组的指针

那么, 如何声明一个数组指针呢?

int (* p)[10]; /*括号是必须写的,不然就是指针数组;10是数组的大小*/

1

拓展:有指针类型元素的数组称为指针数组。

2.通过指针引用数组元素的基本方法

(1)小标法:a[i]。

(2)指针法:* (a+i) 或 * (p+i) 或 p[i]。其中,a是数组名,p=a,即p指向数组a首元素的地址。

问:为什么* (a+i) 和* (p+i)是等价的,或者说是引用的同一个数组元素呢?

答:在C语言中,数组名代表的是数组中首元素的地址。在程序编译时,a[i]是按*(a+i)处理的,即按数组元素的首地址加上相应位移量i找到新元素的地址。而p=a,即p是指向数组a的首元素的地址,因此是等价的。从这里可以看出,[ ]实际上是变地址运算符,即将a[i]按a+i计算地址,然后找此地址单元中的值。

问:为什么p[i] 和* (p+i)是等价的,或者说是引用的同一个数组元素呢?

答:C语言规定,当指针变量指向数字元素时,指针变量可以带下标。而在程序编译时,对此下标处理的方法是转换为地址,即对p[i] 处理成 (p+i)。同上,[ ]是变址运算符。

3.利用指针引用数组元素

(1)p++; *p;

(2)*p++;等价于*(p++);因为++和*的优先级一样,故结合方向是从右向左。

(3)*(p++);和*(++p);二者是有区别的。前者是先取*p的值,然后p加1;后者是先p加1,再取p的值。即如果p指向的是数组a元素a[0],则前者得到a[0]的值,后者得到a[1]的值。

(4)++(*p);将p指向的元素的值加1。

(5)如果p指向元素a[i],

*(p--);先得到p指向的地址的元素a[i],然后p减1。

*(++p);执行结果得到a[i+1],p加1。

*(–p);执行结果得到a[i-1],p减1。

4.利用指针输出数组元素

int a[10];

int * p;

p = a;

while(p

printf("%d",*p++);

int a[10];

int * p;

p = a;

while(p

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值