2014-09-26 93 views
0

我是C品牌新手,我試圖說明int/long/short有多少個字節。請記住,我必須有變量,所以我不能只說sizeof(int)。任何幫助,將不勝感激謝謝!爲什麼sizeof爲不同的變量報告相同的大小(8字節)?

#include <stdio.h> 

int main() 
{ 
short* A; 
int* B; 
long* C; 

printf("Size of integer variable = %d bytes\n", sizeof(A)); 
printf("Size of integer variable = %d bytes\n", sizeof(B)); 
printf("Size of integer variable = %d bytes\n", sizeof(C)); 
return 0; 
} 
+2

'int *'與'int'不一樣。 – jwodder 2014-09-26 00:28:57

+1

啊對*是一個指針吧? – Skeeter 2014-09-26 00:30:24

+2

可能重複[是sizeof(some指針)總是等於四?](http://stackoverflow.com/questions/399003/is-the-sizeofsome-pointer-always-equal-to-four) – 2014-09-26 00:30:37

回答

5

每次都呼籲sizeof變量實際上是一個指針一個變量。無論指向哪種類型的變量,這些指針在64位應用程序中始終爲8個字節(每個字節8個字節x 8位= 64位)。在32位應用程序中,它們將返回4個字節(每個字節4個字節x 8位= 32位)。這是因爲指針是內存位置的地址,並且該地址的大小不取決於指針所指向的變量的大小。

就可以計算出變量的大小,以使指針由指向解引用sizeof函數指針:

printf("Size of short variable = %d bytes\n", sizeof(*A)); 
printf("Size of integer variable = %d bytes\n", sizeof(*B)); 
printf("Size of long variable = %d bytes\n", sizeof(*C)); 

這將輸出以下的(可能取決於編譯器):

Size of short variable = 2 bytes 
Size of integer variable = 4 bytes 
Size of long variable = 4 bytes 
0

您正在測試short int指針,int指針和long int指針的大小。在許多系統中,所有指針都具有相同的大小。

你可能對看起來像這樣的代碼感興趣。請注意缺少* s。

#include <stdio.h> 

int main() 
{ 
    short A; 
    int B; 
    long C; 

    printf("Size of integer variable = %d bytes\n", sizeof(A)); 
    printf("Size of integer variable = %d bytes\n", sizeof(B)); 
    printf("Size of integer variable = %d bytes\n", sizeof(C)); 
    return 0; 
} 
相關問題