TI中文支持网
TI专业的中文技术问题搜集分享网站

再问关于局部变量

各位大侠,现在还有个问题:我在一段串口接收函数(使用查询的工作模式)中定义了一个局部变量:unsigned char uReceive=0; 即已经完成初始化,现在有两个问题:问题一:我没有给DSP发送数据,但在WatchWindow中观测发现:uReceive中刷新后会出现有时为0,有时为几个固定随机数的情况出现,请教这是怎么回事?问题二:我发给DSP 16个数据,接收结果完全正常,接收过程中刷新没有任何问题,但接收完毕后,再次刷新出现了上述问题,这两个问题是不是就如网上所说的:

  • CCS的编译器会给未初始化的全局变量随机分配一个值,它在存储空间的地址是固定的。局部变量是在运行的时候由程序在栈空间内开辟的一小段储存空间,因此没有一个固定的地址,但是未初始化时会被分配一个随机值。局部变量在的空间在过了声明周期之后就会被回收。

    所以在函数调用完毕后这个局部变量后,由于存储空间被收回,所以会出现上述两种情况。望各位大侠不吝赐教!小弟在此谢过。

Eric Ma:

yi wang,

局部变量只在规定的范围内有效,如一个函数内有效,当程序跳出这个函数后,这个局部变量也就无效了。我们观看局部变量都是在watchwindow中的variable查看的。

我认可上述的解释方法。

Eric

各位大侠,现在还有个问题:我在一段串口接收函数(使用查询的工作模式)中定义了一个局部变量:unsigned char uReceive=0; 即已经完成初始化,现在有两个问题:问题一:我没有给DSP发送数据,但在WatchWindow中观测发现:uReceive中刷新后会出现有时为0,有时为几个固定随机数的情况出现,请教这是怎么回事?问题二:我发给DSP 16个数据,接收结果完全正常,接收过程中刷新没有任何问题,但接收完毕后,再次刷新出现了上述问题,这两个问题是不是就如网上所说的:

  • CCS的编译器会给未初始化的全局变量随机分配一个值,它在存储空间的地址是固定的。局部变量是在运行的时候由程序在栈空间内开辟的一小段储存空间,因此没有一个固定的地址,但是未初始化时会被分配一个随机值。局部变量在的空间在过了声明周期之后就会被回收。

    所以在函数调用完毕后这个局部变量后,由于存储空间被收回,所以会出现上述两种情况。望各位大侠不吝赐教!小弟在此谢过。

user3681076:

回复 Eric Ma:

watchwindow中的variable?没用过,您可以用图演示一遍吗?

各位大侠,现在还有个问题:我在一段串口接收函数(使用查询的工作模式)中定义了一个局部变量:unsigned char uReceive=0; 即已经完成初始化,现在有两个问题:问题一:我没有给DSP发送数据,但在WatchWindow中观测发现:uReceive中刷新后会出现有时为0,有时为几个固定随机数的情况出现,请教这是怎么回事?问题二:我发给DSP 16个数据,接收结果完全正常,接收过程中刷新没有任何问题,但接收完毕后,再次刷新出现了上述问题,这两个问题是不是就如网上所说的:

  • CCS的编译器会给未初始化的全局变量随机分配一个值,它在存储空间的地址是固定的。局部变量是在运行的时候由程序在栈空间内开辟的一小段储存空间,因此没有一个固定的地址,但是未初始化时会被分配一个随机值。局部变量在的空间在过了声明周期之后就会被回收。

    所以在函数调用完毕后这个局部变量后,由于存储空间被收回,所以会出现上述两种情况。望各位大侠不吝赐教!小弟在此谢过。

user3681076:

回复 Eric Ma:

求助于各位,这个问题困扰我好久。

赞(0)
未经允许不得转载:TI中文支持网 » 再问关于局部变量
分享到: 更多 (0)