C++之数组指针和指针数组的区别(复习)

  • 数组指针(行指针) int(*p)[n]
  • ()的优先级比较高,所以首先p是一个指针,指向一个整形数组。n为数组的长度,且当我们要执行p+1时,需要运行n个int型数据。
  • 例如将二维数组赋予一指针,则:
int a[3][4];
int (*p)[4]; //定义一个数组指针,指向含有4个元素的数组
p = a; // 将二维数组的首地址赋予a,a[0][0]
p++; //将该语句执行,p=p+1,p跨过行a[0][]指向a[1][]
  • 所以数组指针指向一堆数组的指针,行指针

  • 指针数组 int *p[n]
  • [ ]的优先级高,先与p结合为一个数组,再由int*说明这是一个整形指针数组,它有n个指针类型的数组元素。
  • p是一个不可知的表示,只存在p[0],p[1],p[2],…p[n-1],它们分别是指针变量可以用来存放变量地址。但是可以表示为*p = a ,这里*p是指针数组的的一个元素的值,a是首地址的值。
  • 将二维数组赋给一指针数组,则:
int *p[3];
int a[3][4];
for(i = 0; i < 3; i++)
p[i] = a[i];
  • 这里int *p[3] 表示一个一维数组内分别存放三个指针变量,分别是p[0], p[1],p[2],所以要分别赋值。

  • 数组指针只是一个指针变量,它占有内存中一个指针的存储空间,指针数组是多个指针变量,以数组形式存在内存中,占有多个指针的存储空间

  • 同时表示数组中第i行j列的一个元素:

p[i][j] = (*(p+i))[j] =  *(*p[i] + j) =  *(*(p+i)+j)
  • 注意优先级 ()> [ ] > *
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值