#include <stdio.h>
#include <cs50.h>
int main (void)
{
int *x;
x = malloc(sizeof(long long)*3);
scanf("%i %i %i",x, (x+1), (x+2));
printf("%i\t %i\t %i\n",(int)x, (int)(x+1), (int)(x+2));
printf("%i\t %i\t %i\n",*x, *(x+1), *(x+2));
free(x);
}
這一計劃的輸入12,2,3輸出是:在c中如何分配內存,以及爲什麼兩個連續內存之間的差異總是4?
43171856 43171860 43171864
12 2 3
所以,我的問題是,爲什麼地址之間的差爲4在每種情況下, 如果*x
點43171856
然後*(x+1)
應該指向4317185
而不是43171860
? sizeof(long long)
也是8
字節,所以如何分配內存在43171856
和43171860
之間的這些4
字節之間分配8
個字節。