万千只cnm 发表于 2020-12-14 11:20:18

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

请问这里面有几层呀
指向的数组是指针数组,里面存放的是指针变量嘛;
为什么不能用
*(*p2+i)
而是
*(*(p2+i))
大神们帮帮我{:5_104:}



char *p1 = { 'A','B','C','D' };
char(*p2) = &p1;
for (int i = 0; i < 4; i++)
{         printf("%c\n", *(*(p2+i))); }

jackz007 发表于 2020-12-14 11:20:19

本帖最后由 jackz007 于 2020-12-16 15:11 编辑

      如果有定义
      int d[] = {{1 , 2 , 3} , \
                     {4 , 5 , 6}} ;
      int (* p) = d          ;
       则:
      * ( * p + j) = * ( * (p + 0 ) + j) = p = d
       而:
      * (* (p + i)) = * ( * (p + i) + 0) = p = d

万千只cnm 发表于 2020-12-14 11:20:55

有人嘛嘛

万千只cnm 发表于 2020-12-16 19:30:28

jackz007 发表于 2020-12-16 15:10
如果有定义

       则:


一个是行 一个是列嘛

jackz007 发表于 2020-12-16 19:35:50

万千只cnm 发表于 2020-12-16 19:30
一个是行 一个是列嘛

   * ( * (p + i) + j) 其实就是 p[ i ][ j ],i 是行,j 是列
页: [1]
查看完整版本: 指向数组的指针,数组是指针数组