实测了MDK里函数里定义的变量默认是0,结构体变量却是随机值。

2019-07-20 23:32发布

关于MDK函数内定义变量的相关问题,我发现在函数里直接定义一个变量,比如:int var1;  //那么即时不进行初始化,那么它打印出来的值是0,也就是MDK默认会对其赋0值操作。
但是:-----------------当我在函数里定义一个结构体变量时(内部有一个成员是:int var2;),比如:

#include "stm32f4xx.h"
#include "sys.h"
#include "uart.h"

tpyedef struct {         //这里声明一个结构体数据类型
    int var2;
    char ch1;
}Var_struct;

int main(void){
     Var_struct    Var_structure;  //定义一个结构体变量
     int var1;                           //定义一个整形变量
     printf("打印出来的var1变量的值为:%d ",var1);                             //值为0     printf("打印出来的结构体成员变量的值为:%d ",Var_structure.var2); //值为随机值。   ??这里为什么会是随机值啊?



我发现打印出来的结构体变量成员值printf("打印出来的结构体成员变量的值为:%d ",Var_structure.var2);时,这个Var_structure.var2为什么居然是一个随机值?


我的问题是定义的变量与结构体变量不都是在函数里定义的吗?为什么一个默认被赋为0,而另一个结构体中的成员变量同样是int类型的,居然是一个随机值?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
jermy_z
1楼-- · 2019-07-21 03:24
你非要较真的话,在程序里,所有未经初始化的变量都是非法的
lili0231
2楼-- · 2019-07-21 07:40
 精彩回答 2  元偷偷看……

一周热门 更多>