C语言中为什么参数的值在变?

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:55:28
没看明白为什么程序的参数的值在变化,Unit_p->Device_p->OutputType,不懂,先单步跑是这个值,过会跑又变了,请高手指教一下,谢谢啊
程序的参数只能是一个值吗?为什么相同的程序参数却在变化?只是在两个值中变化。原来Unit_p->Device_p->OutputType值是STVOUT_OUTPUT_DIGITAL_HDMI_RGB888,一会又变成了STVOUT_OUTPUT_HD_ANALOG_YUV,真是糊涂了,!
typedef struct
{
stvout_Device_t* Device_p;
U32 UnitValidity; /* Only the value XXX_VALID_UNIT means the unit is valid */
} stvout_Unit_t;
不是跑完了才变的,是又跑一遍时值不一样哦~! 我确实没有看到这个值被初始化哦,不过这个值只在两个中间变化,是指针就得变吗?不明白,可以请高手们指导一下吗?
是这个Unit_p->Device_p->OutputType 一直在变化,调试输出时没有使用调试输出的时候使用
if(Unit_p->Device_p->OutputType == 0) printf("STVOUT_OUTPUT_DIGITAL_HDMI_RGB888")
else printf("STVOUT_OUTPUT_HD_ANALOG_YUV");

如果中间你没有改变这个值的话,那么可以肯定的说,你没有对OutputType进行初始化!

对啊,就是因为你没初始化,系统每次运行的时候那块内存的值就是随机的,这很正常。。

原因就是因为你没初始化才导致这种情况的,我都说这么清楚了。。。你看楼下的也有这么跟你讲的。你把那个值做了初始化就不会出现这种情况了,大哥!

大哥,我们无法交流了。。。你就在定义了Unit_p之后来一句Unit_p->Device_p->OutputType=1或者=0;之类的就可以了,或者设定成你想要的值。
至于你打出的那个信息,不如直接按int打出来看看倒底是多少

你研究的太深入了 我才懂基础 帮不了

不怎么明白你的问题

是指针的话,当然会变呀,我昏死,你要多学习一下基础的东西

靠。

没有初始化,它的值就是不确定的,后面的问题就不是问题了

如果调试输出的时候使用
if(Unit_p->Device_p->OutputType == 0) printf("STVOUT_OUTPUT_DIGITAL_HDMI_RGB888")
else printf("STVOUT_OUTPUT_HD_ANALOG_YUV");

那肯定只在两个值之间变化了