关于结构体变量初始化的问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:33:13
比如下边的一段代码

main
{
ROBOT_POS rbtpos // 这里ROBOT_POS是结构体名
// rbtpos是函数的内部变量
.........
......... //各种运算

if( rbtPos.iTrs == POS) <<这里报错说rbtpos没有被初始化
{...}
......... //各种处理
}

请问各位高人,函数的内部变量原则上是要初始化的。但是这个结构体变量需不需要初始化?要是需要用memset函数可能要占用内存,可呢不行。希望各位高人给详细的讲讲 内部变量 和 结构体变量 的初始化的问题?

谢谢了。

}
结构体 ROBOT_POS 在头文件里有定义。要是对它初始化的话,也许可用
memset(&rbtPos, 0x00, sizeof(ROBOT_POS))

就是担心占用内存。清高人详解,谢谢。

另外,rbtPos.iTrs在前边没有被赋值。报错说rbtPos没有被赋值,可能没有被初始化。

你好哈 内部变量是一个相对的概念 凡是在{}内的变量相对此{}的代码来将就是内部的。

内部变量在没有赋初始值时是不确定的。
但是在所有函数外的变量叫全局变量, 他在没有赋值时, 编译时会自动赋值0或者0.0;

const 常量在定义时必须赋值。

结构体的定义一般是在主函数外的, 但此定义只是创建数据内型,并并没有占用内存。

当你在用你已经创建的结构体类型数据定义变量时,此时才占用内存。
如:ROBOT_POS rbtpos

此时rbtpos 变量和其他变量一样也有局部,全局,静态之分。

rbtPos.iTrs是不是在前面的运算中一直没有赋值啊?如果有赋值的话估计不用初始化吧。当然给变量赋初值还是很有好处的,至于占用内存,定义了变量之后就已经占用了吧,只是内存空间里面的值是不确定的