须弥芥子 发表于 2022-10-11 14:27:48

为什么说二维数组里面存储的是一维数组

本帖最后由 须弥芥子 于 2022-10-11 14:39 编辑

这样的话为什么下面代码不可行?
#include <stdio.h>

int sum(int, int [*]);

int main(void){
    int arr1 = {1,2};
    int arr2 = {&arr1,{1,2}};
    for(int i = 0; i < 2; i++)
      for (int k = 0; k < 2; k++)
            printf("%d\n",arr2);
    return 0;
}

人造人 发表于 2022-10-11 14:33:33

C语言的语法不允许这样做,就是这样

jackz007 发表于 2022-10-11 15:02:22

本帖最后由 jackz007 于 2022-10-11 15:03 编辑

      这是真的,看看这个代码
#include <stdio.h>

int main(void)
{
      int d[] = {1 , 2 , 3 , 4 , 11 , 12 , 13 , 14 , 21 , 22 , 23 , 24 , 31 , 32 , 33 , 34} ;
      int i , j                                                                           ;
      int (* x) = (int (*)) d                                                         ;
      for(i = 0 ; i < sizeof(d) / 4 / 4 ; i ++) {
                printf("%2d" , x)                                                       ;
                for(j = 1 ; j < 4 ; j ++) printf(" , %2d" , x)                        ;
                printf("\n")                                                                  ;
      }
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
1 ,2 ,3 ,4
11 , 12 , 13 , 14
21 , 22 , 23 , 24
31 , 32 , 33 , 34

D:\\C>
页: [1]
查看完整版本: 为什么说二维数组里面存储的是一维数组