2013-07-17 65 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