为什么 5x5 矩阵上的内存地址被 4 分隔?

Gab*_*ina 1 c

我一直在研究 C 中的指针,从我的读数来看,矩阵的内存地址分配遵循线性模式,即使矩阵是二维的。我用一个简单的算法做了一个实验来打印每个矩阵元素的地址,我试图理解它的结果。它遵循 4 x 4 模式,即使矩阵是 5x5。这是为什么?它不应该遵循像“1,2,3...”这样的 1 x 1 模式吗?

int main()
{
    int size = 5;
    int matriz[size][size];
    int i, j;
    for(i=0;i<size;i++) {
        for(j=0;j<size;j++) {
            matriz[i][j] = rand();
            printf("Address %d\n", &matriz[i][j]);
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Die*_*Epp 5

在您的系统上,sizeof(int)是 4。每个 int 需要 4 个字节。所以每个下一个 int 的地址都高 4。

尝试不同的类型,例如 char、short 或 double。