它通常知道堆棧中的東西默認情況下未初始化。我試圖用堆棧中的struct來證明,但意外的是我的指針初始化爲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總是指向零(空指針)...
要知道,即使是停止的時鐘每天兩次顯示正確的時間。 –
是的,但我跑了幾次程序。所有其他地址洗牌,所以我認爲它是不可能的,它總是零...... – falstaff
未定義的行爲可能只是偶爾讓你感到驚訝。 – Sebivor