スタック上のものはデフォルトでは初期化されないことが一般的に知られています。スタック上の構造体でそれを証明しようとしましたが、予期せず、ポインターがnullで初期化されましたが、なぜですか?このポインタを初期化するのは何ですか?
#include <stdio.h>
#include <string.h>
struct strustri {
int var1;
char *var2;
};
int main()
{
struct strustri test1 = {
.var1 = 12,
.var2 = "Teststring",
};
struct strustri test2;
printf("test1.var1 is %d\n", test1.var1);
printf("test2.var1 is %d\n", test2.var1);
printf("test1.var2 points to %p\n", test1.var2);
printf("test2.var2 points to %p\n", test2.var2);
return 1;
}
そしてこれは私のマシン(Ubuntu 12.10)の出力です:
test1.var1 is 12
test2.var1 is -1271814320
test1.var2 points to 0x400634
test2.var2 points to (nil)
私は自分の例を複数回実行しました。毎回var1の別の値を取得しますが、var2は常にゼロ(nullポインター)を指します...