指针数组,数组指针,指向指针数组的指针

问:

Char RollNum[30][4];  char (*p)[4]; char *q[4]   char **r  = q;

RollNum、p、q、r三者异同, 怎么区分。

 

答:

  1.  RollNum 是二维数组名,即是数组首行的地址,相当于 &RollNum[30]

 

  1.  (*p)[4]是一个指向包含四个元素的一维数组的指针变量,如果RollNum作为函数实参,则 (*p)[4] 作形参,此时 (*p)[4] 相当于数组首行地址。(数组指针)

     

  2.  *q[4] 是一个指针数组,该数组中每个元素都是一个指针,每个指针指向哪里需要在程序中后续再定义了。(因为[ ] 的优先级比 * 要高, *q不加括号就相当于 *(q[4]);

     

  3.   int * *r = q 是指向指针数组的指针,至于为什么有两个*号,如果我们写成 *r,那么r就是指针数组这个数组的首元素地址,我们要的是这个数组的首元素内容,(因为首元素内容是某个变量的地址)而不是首元素的地址。所以再加个*,p就是我们要指的变量的地址了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值