內存:線性排列
地址:地址 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個元素的數組