C語言內存,地址,+1尺度,二維數組

內存:線性排列

地址:地址 4 bytes

地址+1 尺度

void* address  +1  0xffff ff00  0xffff ff01

int  * address  +1  0xffff ff00   0xffff ff04 移動sizeof(int)

struct s

{

int a;

float b;

};

struct s* address + 10xffff ff00  0xffff ff08 移動sizeof(struct s)

地址+1根據指針的類型不同而不同,+1尺度是由此指針指向的元素的大小就決定的

int a[4][2]

a+1                 :2*sizeof(int)

a[1]+1             :sizeof(int)

&a[1][1] + 1     :sizeof(int)

[2]相當於*(X+2)

a指向的是一個數組的首地址,這個數組長度是4,數組中的元素是數組

C語言靜態語言變量值與其類型是一對不可分割的元素

指針變量的類型表明其

+操作移動的地址

*操作指向的對象

======================================================

二維數組的名字是一個指針,這個指針指向的是一個元素,這個元素是一個數組,數組的元素的個數是列數,這樣就夠了

所以a+1 會產生上面的地址偏移

在使用二維數組的時候

void function(int a[][4])和void  function(int a[2][4])都行因爲這兩種情況a都是指向一個有4個元素的數組


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章