二维数组和数组指针

1、对于二维数组a[3][5]

a可以理解为二重指针,a[0]理解指针,a[0][0]是对这个地址进行访问了。

其实[ ]的意义 可以理解成* 。

a[ i ]其实就相当于*(a+i) 所以原来的就相当于 *(*(a+i)+j) +的优先级比 *的高 所以外面那个括号可以去掉 就变成了 **(a+i)+j 。

 

2、对于数组指针

例如  int (*p)[5];   p+1的内存跨步为5个int类型.

虽然与二级指针的类型不同,但它们的用法是相似的.

   int a[2][5]={1,2,3,4,5,6,7,8,9,10};
   int (*p)[5]=a;    //定义一个数组指针指向一个二维数组的地址

   printf("a[0][4]   =%d\n",a[0][4]);
   printf("*((*a)+4) =%d\n",*((*a)+4));
   printf("*((*p)+4) =%d\n",*((*p)+4));

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值