我一直在研究 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)
在您的系统上,sizeof(int)是 4。每个 int 需要 4 个字节。所以每个下一个 int 的地址都高 4。
尝试不同的类型,例如 char、short 或 double。