以下是我的代碼:的sizeof()爲NULL
#include <stdio.h>
struct abc
{
char a;
int b;
};
int main()
{
struct abc *abcp = NULL;
printf("%d", sizeof(*abcp)); //Prints 8
/* printf("%d",*abcp); //Causes program to hang or terminate */
return 0;
}
我明白結構的大小是8由於結構填充。然而,爲什麼'abcp'的sizeof()在'abcp'賦值時給NULL賦值? 'abcp'分配NULL時意味着它沒有指向任何地方?但是,爲什麼我得到上述代碼的輸出?
由於「此指針的大小爲8」,所以不返回8。 8返回,因爲這是'abcp'指向的結構指針的大小。要重新調整指針的大小,代碼將使用'sizeof abcp'。 – chux 2014-08-28 14:45:54