Bra*_*ran 7 c arrays multidimensional-array
我无法在C标准文档中找到它说多维数组是连续的.虽然可以从数组元素是连续的事实推断出来,但我想从社区中获得一些观点.
以下代码按照我期望的顺序打印出数字,即1 - 9.
#include <stdio.h>
int main()
{
    int a[][3] = {{1,2,3},{4,5,6},{7,8,9}};
    int* p = (int*)a;
    int i;
    for (i = 0; i < sizeof(a)/sizeof(int); i++)
        printf("%d ",p[i]);
    return 0;
}
Sou*_*osh 10
是的,它可以通过归纳获得.(仅作为建议,如果有帮助,请尝试将多维数组视为数组数组.)
例如,考虑一个类似的数组a[3][3].
所以a[0][0],a[0][1]和a[0][2]是的元素a[0],他们将是连续的.
接着,a[0]和a[1]是的元件a,所以这将是连续的
等等.
合在一起,a[0][2]并将a[1][0]彼此相邻,从而继续相邻.
有关更好的视觉表示,请参见下图.
的阵列,比方说int arr[4][5],具有四个行,a[0],a[1],a[2]和a[3]它们是邻接的.
现在每个那些行有五列,如a[n][0],a[n][1],a[n][2],a[n][3],a[n][4]和他们是连续的.
因此,数组的所有元素(和元素元素)都是连续的.
根据6.2.5 Typesp20:
数组类型描述了具有特定成员对象类型的连续分配的非空对象集,称为元素类型.只要指定了数组类型,元素类型就应该是完整的....
因此,所有数组类型(多维或非多维)都是连续分配的.
| 归档时间: | 
 | 
| 查看次数: | 538 次 | 
| 最近记录: |