C中的二维数组,地址生成

时间:2011-02-15 18:40:54

标签: c arrays

如何在C中的数组中生成地址,比如说[x] [y]如何得到一个特定的值,我知道这不是一个大问题,而是实际开始编码。

4 个答案:

答案 0 :(得分:3)

根据您考虑过的数组的数据类型,它已完成。

假设对于一个Integer数组,每个值保存4个字节,因此行X long将占用4个字节。

因此,X * Y的2-D矩阵将是4 * X * Y字节。

  

任何地址都说Arry [X] [Y]会   计算公式为:( Arry的基地址)   +(X *列数)+(Y //当前行中的偏移量)

答案 1 :(得分:1)

C中的二维数组是矩形的。例如:

int matrix[2][3];

分配一个大小为2*3*sizeof(int)个字节的内存块。处理matrix[0][1]只需将0 * (3 * sizeof(int))添加到sizeof(int)即可。然后将该总和添加到matrix开始的地址。

答案 2 :(得分:0)

嵌套数组是一个数组数组。

例如,int[][6]int[6]的数组 假设一个4字节int,外部数组中的每个元素都是6 * 4 = 24字节宽。

因此,arr[4]获取外部数组中的第三个数组,或*(arr + 4 * 24)

arr[4]是正常int[]arr[4][2]获取此内部数组中的第二个int,或*(arr + 4 * 24 + 2 * 4)

答案 3 :(得分:0)

E.g。

char anArray[][13]={"Hello World!","February","John"};

您可以将其视为:

anArray

H|e|l|l|o| |W|o|r|l|d|!|\0|F|e|b|r|u|a|r|y|\0|\0|\0|\0|\0|J|o|h|n|\0|\0|\0|0|\0
^                          ^                              ^
0                          13                             26