C兩個記憶體地址之間的地址差距怎麼理解,例如1 00681E98 2 00681F

2022-04-28 16:46:33 字數 936 閱讀 9528

1樓:匿名使用者

這兩個記憶體地址存放的應該是int型的變數吧,int佔4個位元組,70=7*16個位元組,那麼中間一共有7*16/4個int型的變數,也就是7*4=28,相差28個int單位。

兩個記憶體地址要相減,必須是在同一個陣列裡面。例如你所說的這個問題,可能是一個int a[30]的陣列,那麼&a[29] - &a[1],結果就是28。再比如,

int *p = &a[0];

int b = *(p + 28); // b的值就是a[28]直接用記憶體地址相加減,通常用來計算記憶體的偏移量。

2樓:

00681f08(16)-00681e98(16)=70(16)這沒錯,而70(16)=112(10)。你的28是怎麼得到的?只有一種可能,那就是你計算的是兩個4位元組元素的指標的差而不是地址差,即112/4=28。

關於指標的差計算一定要注意,兩指標相減等到的是元素個數而不一定是地址差,只有單位元組元素的指標相減二者才是一致的。

在c++語言中,二維陣列在記憶體中的存放順序是

3樓:倒黴熊

二維陣列在c++中儲存,一般是按行儲存的,就是將一行當作一維陣列進行儲存。

例如:a[2][2]這個二維陣列,其在記憶體中儲存順序為:

a[0][0] a[0][1] //先儲存第一行a[1][0] a[1][1] //再儲存第二行。

假設是32位系統,整型佔4個位元組,則其在記憶體的形式為:

a[0][0]

a[0][1]

a[1][0]

a[1][1]

4樓:秋風枝頭

二維陣列的元素在記憶體中是依次存放的,也就是說記憶體地址是連續的

例如 int array[2][2]=,};

記憶體中依次存放著:1 2 3 4.

c語言分配超大的記憶體地址,c語言 分配一個超大的記憶體地址

可能是我沒太看懂樓主的意思啊 個人還是覺得樓主可能是沒搞懂malloc的用法malloc可以申請到記憶體中可以申請的最大大小 一個int不算啥樓主是想做什麼呢?如果要給其他型別的引數分配空間就要 type a type malloc sizeof type 比如double double a dou...

如何獲取PHP變數的記憶體地址,怎麼輸出一個變數的記憶體地址

樓上說的對,沒必要搞這麼深,而且脫離了你的主題就更沒意思了。arraycopy是 arr的copy,兩者沒有關係,如果你希望那樣的話可以用 arraycopy arr,此時 arraycopy是 arr的引用,也就是說修改這個時那個也變了。php中的物件例項是引用方式傳遞的,其他一般都是傳值,除非加...

兩個serversocket之間的通訊怎麼做啊跪求就是

已經有現成的工具可以實現了啊。多維互聯inp協議,就是跨網端對端通訊的。socket能不能實現兩個區域網之前的通訊 只要兩個區域網是通的,你的android程式就可以訪問兩個區域網內的所有埠!可以的!豌豆莢的wifi傳檔案就是這個原理 謝謝指點,我先研究一下 我不是高手,我也很想知道 socket實...