c - 为什么不能像单维那样访问多维数组

标签 c arrays memory

在C语言中 我们有

int B[2][3] = { {1, 2, 3}, {4, 5, 6} };

它在内存中存储为

1  2  3  4  5  6

int A[6]={1,2,3,4,5,6};

它也存储在内存中

1  2  3  4  5  6

我们可以通过 A[i] 访问 A[6],其中 i=0,2,3.. 但我们无法通过 B[i ] 访问 B[2][3],其中 i=0,1,2.. 我知道还有其他技术可以访问多维数组的元素 但是我们不能像单维数组一样访问多维数组,为什么?

最佳答案

你可以解释它们:

int B[2][3] = { {1, 2, 3}, {4, 5, 6} };

int* b = ( void* )B ;

for( int i = 0 ; i < 6 ; i++ )
    printf("%d " , b[i] ) ;

对于单个数组也是如此:

int A[6]={1,2,3,4,5,6};

int (*a)[3] ;

a = ( void* )A ;

for( int i = 0 ; i < 2 ; i++ )
    for( int j = 0 ; j < 3 ; j++ )
        printf("%d " , a[i][j] ) ;

关于c - 为什么不能像单维那样访问多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21376958/

相关文章:

将字符串数组组件与字符进行比较

c - 如果从管道读取时 tail 失败怎么办

c++ - 为什么我不能在 C++ 中用 new 调用参数化构造函数?

c++指针的内存分配过程

c++ - 'WCHAR* 类型的参数与 "const char*"不兼容'

apache-flex - 弹性 : Does using "new" remove event listeners?

c - 赔率到第一个,偶数到最后

c - 如何找到数组中重复次数最多的值?

java - 您可以将 Math.max 与数组一起使用吗?

Java 错误;需要数组,但找到了 java.lang.String