标题:
一个简单的c语言问题,请各位不吝赐教。
[打印本页]
作者:
waitforgod
时间:
2005-8-1 11:28
标题:
一个简单的c语言问题,请各位不吝赐教。
邵贝贝的《单片机嵌入式应用的在线开发方法》中说道:由于程序是固化在rom里的,而不是下载到ram中的,除非在应用程序运行后向ram中下载什么,ram中的内容是随机的。这就要求c语言开发嵌入式应用程序时不使用初始化变量。
例不能使用: int a=5; function{ a+=3;}
要写城 : int a; function{a=5;a+=3;}
但是两种用法我都试过,都可以。怎么理解这段话?
作者:
strongchen
时间:
2005-8-1 11:43
RAM中的变量分为全局变量和局部变量。对于全局变量,应该没什么问题。但对于局部变量,若采用第一种形式,而在int a=5和function{a+=3}之间运行过别的函数或程序(即使程序中它们中间没有别的代码,也可能运行中断程序等),则不能保证a的初始值。所以最好采用第二种形式。
作者:
waitforgod
时间:
2005-8-1 20:40
费解ing,“对于全局变量,应该没什么问题。但对于局部变量,若采用第一种形式,……“
因该对局部变量没问题吧?函数不可重入,不就是因为全局变量被修改吗?
作者:
strongchen
时间:
2005-8-2 11:12
全局变量在RAM中占一个固定的地址,当函数调用某个全局变量时,程序员应该知道此时它的数值所代表的含义,而不会是一个随机的数。全局变量可以用来传递参数。
但局部变量并没有固定的地址,它分配在堆栈中,只是调用某个函数时,才临时分配一个地址。当函数调用结束时,堆栈空间就会释放。局部变量不能用于传递参数。
作者:
coleflyer
时间:
2005-8-2 11:34
例不能使用: int a=5; function{ a+=3;}
要写城 : int a; function{a=5;a+=3;}
这个例子应该就是针对全局变量来说的吧,局部变量肯定是定义在函数内部的啊
作者:
strongchen
时间:
2005-8-2 11:43
可能我第一个帖子的描述不是很准确。但不管怎样,只要各位能了解全局变量和局部变量的具体物理规程,在编程中就能自如地运用,也就不必拘泥于某些书本上的句子了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0