我有兩個以完全相同的方式定義的結構。列印出其中 int 指標的指標值,其中一個為 (nil),另一個為實際指標值。
#include <stdio.h>
struct struct1_ {
int *intPtr;
};
struct struct2_ {
int *intPtr;
};
int main(int argc, char const *argv[])
{
struct struct1_ struct1;
struct struct2_ struct2;
printf("struct1.intPtr %p\n", struct1.intPtr);
printf("struct2.intPtr %p\n", struct2.intPtr);
return 0;
}
輸出:
struct1.intPtr 0x7ffca33a3f10
struct2.intPtr (nil)
gcc 版本 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
這到底是怎么回事?
uj5u.com熱心網友回復:
當區域變數未初始化時,它的值(或對于結構其成員的值)是indeterminate。所以不能保證任何特定的值都會被讀取。
事實上,在許多情況下,這樣做會觸發未定義的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480160.html
