李现实 发表于 2021-12-20 16:57:55

求问大神数组指针

第二张图里的把int (*p) = array改成int (*p)= &array是什么意思呢?理解不了为什么又要加个取址符。。。
然后就是*(*(p+i)+j))的前面又加了一个*解引用又是什么意思呢?求解答

jhq999 发表于 2021-12-20 17:32:08

本帖最后由 jhq999 于 2021-12-20 17:40 编辑

int (*p)= &array;//(*p)代表二维是3一维是4的三维数组指针,所以赋值给p二维数组array的指针的指针,让p=array;


*(*(p+i)+j))//差点被你的疏忽给骗了,是第一张图int (*p)= array;的解引用,你想说的是哪张图的解引用?
                  //第一张图p=array;所以p的解引用也就是数组array的解引用

李现实 发表于 2021-12-20 18:28:58

jhq999 发表于 2021-12-20 17:32
*(*(p+i)+j))//差点被你的疏忽给骗了,是第一张图int (*p)= array;的解引用,你想说的是哪张图的 ...

*(*(*p+i)+j))是这里的解引用,最内层代表的是*p+i的指针吗?那另外两个*是怎么解释的呢?

jhq999 发表于 2021-12-20 18:47:19

本帖最后由 jhq999 于 2021-12-20 18:53 编辑

李现实 发表于 2021-12-20 18:28
*(*(*p+i)+j))是这里的解引用,最内层代表的是*p+i的指针吗?那另外两个*是怎么解释的呢?

*p=p=array
所以,相当于*(*(array+i)+j);array+i相当于&array,*(array+i)相当于array;array+j相当于&array;*&array=array

李现实 发表于 2021-12-20 20:53:39

jhq999 发表于 2021-12-20 18:47


这个点懂了,那int (*p) = array和int (*p)= &array这两行代码的区别是什么呢?求详解

jhq999 发表于 2021-12-20 21:00:48

李现实 发表于 2021-12-20 20:53
这个点懂了,那int (*p) = array和int (*p)= &array这两行代码的区别是什么呢?求详解

(*p) 是二维数组指针,(*p)是三维数组指针
int (*p) = array;//p=array
int (*p)= &array//*p或者p=array
页: [1]
查看完整版本: 求问大神数组指针