来学习,结构体的赋值,不是非常懂,但没在外面赋值过。 |
因为c语言是基于函数的 ,只有函数里的代码才能被正常调用执行,在函数外的代码,如非特殊处理是没有机制去执行的(startup调用main是特例)。所以函数外只能定义变量,定义时可以赋初值,但不能单纯地赋值。 |
所谓的函数外赋值,还是在函数内,无非在一个隐藏的函数,并被startup调用后赋值,从效率来讲,还不如在main函数赋值来的快。你仿真一下,看看哪个快就知道了。 |
定义时初始赋值,重新赋值必须在函数内发生了运算,既定规则,没有道理可言 |
写在函数外是全局变量,用完后不释放RAM,写在函数内是局部变量,退出函数就释放RAM,如果MCU的RAM不多,如只有128个字节,如果你定义的全局变量超过128字节,你的程序运行会出错。 |
面向函数的语言,所有语句,必须在函数内。 |
函数外定义变量时可以同时赋值。 要是想在函数外赋值,要定义变量的时候进行初始化赋值 ![]() |
变量赋值不一定要在函数中进行,如果在函数外赋值必须要在定义变量的时候同时赋值,也就说定义与赋值要合成一条语句。因为程序是在main函数顺序开始,需要哪个函数就会执行该函数,需要哪个变量就调用那个变量,若在本帖中图2所示中打印c2[0].b并不会得到22的值,因为在编译器看来你只是声明了该变量未对其赋值,因为程序没有执行赋值那条语句。 |
要是想在函数外赋值,要定义变量的时候进行初始化赋值,C语言本身就不允许你这种操作 |
不一定,函数外定义变量时可以同时赋值。 |