2013-07-17 66 views
0

C++中的sizeof()函數給了我一個函數內部不同的大小,並在main中不同。任何想法爲什麼?sizeof()函數返回不同的大小

void createPacket(char packet[]){ 
    int size = sizeof(packet); 
    printf("%d\n", size); 
} 

int main(){ 
    char packet[PKTSIZE]; 
    createPacket(packet); 
    int size = sizeof(packet); 
    printf("%d\n", size); 
} 

我期待

9 
9 

但即時得到

8 
9 

任何想法,爲什麼?

+5

這是因爲'char packet []'衰變爲一個指針,所以你正在取一個指針的大小。 – Rapptz

+0

'sizeof'是一個運算符,而不是函數。 –

回答

0

如果PKTSIZE是9,並且如果您在x64平臺上編譯它,而不是在主數組大小和函數指針大小。

+0

我可以檢查裏面的數組大小嗎? –

+1

@ user2589783,使用'std :: array'。 – chris

+1

我發現前兩個ifs誤導。在'main'中獲得數組大小以及函數中的指針大小不依賴於這兩者中的任何一個。 – chris