前两天有个面试,面试官问我,定义一个结构体变量指针,当没有初始化的时候,a的值和e的值是什么,一下子我被问懵了,然后我原本认为这是个局部指针变量,而且malloc是不会初始化变量的,所以我说值是随机的,但是好像不是这个答案,我回头测了一下,循环输出25次后,发现char的值很多不一样,而int和float的值都一样是0,很不理解,如果找到答案,会继续更新。
struct list{
char a;
char b;
char c;
char d;
int e;
float f;
};
void printt(void)
{
struct list* p1 = (struct list*)malloc(sizeof(struct list));
printf("a = %d, b = %d, c = %d, d = %d, e = %d, f = %d\n",
p1->a, p1->b, p1->c, p1->d, p1->e, p1->f);
return ;
}
int main()
{
int a = 25;
while(a){
printt();
--a;
}
return 0;
}
输出画面1
输出画面2
输出画面3
3次输出画面。但是却一模一样,而隔了一段时间后,输出答案又不一样,很迷惑