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

今天药忘吃喽~ 2022-06-12 15:12 592阅读 0赞

问:

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] 相当于数组首行地址。(数组指针)
  1. *q[4] 是一个指针数组,该数组中每个元素都是一个指针,每个指针指向哪里需要在程序中后续再定义了。(因为[ ] 的优先级比 * 要高, *q不加括号就相当于 *(q[4]);
  1. int * *r = q 是指向指针数组的指针,至于为什么有两个*号,如果我们写成 *r,那么r就是指针数组这个数组的首元素地址,我们要的是这个数组的首元素内容,(因为首元素内容是某个变量的地址)而不是首元素的地址。所以再加个*,p就是我们要指的变量的地址了。

发表评论

表情:
评论列表 (有 0 条评论,592人围观)

还没有评论,来说两句吧...

相关阅读

    相关 指针数组指针

    这两个一直很容易弄混,原因在于运算符的优先级不知道。 表示一个数组的\[\]和表示一个函数的()具有相同的优先级,这个优先级要高于间接运算符\的优先级。 小技巧区分:注意后

    相关 指针数组指针

    指针数组,故名思义,就是指针的数组,数组的元素是指针; 数组指针,同样,就是直想数组的指针。 简单举例说明: int \p\[2\]; 首先声明了一个数