首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

一个简单的c语言问题,请各位不吝赐教。

一个简单的c语言问题,请各位不吝赐教。

邵贝贝的《单片机嵌入式应用的在线开发方法》中说道:由于程序是固化在rom里的,而不是下载到ram中的,除非在应用程序运行后向ram中下载什么,ram中的内容是随机的。这就要求c语言开发嵌入式应用程序时不使用初始化变量。
例不能使用: int a=5; function{ a+=3;}
要写城   :  int a; function{a=5;a+=3;}
但是两种用法我都试过,都可以。怎么理解这段话?
RAM中的变量分为全局变量和局部变量。对于全局变量,应该没什么问题。但对于局部变量,若采用第一种形式,而在int a=5和function{a+=3}之间运行过别的函数或程序(即使程序中它们中间没有别的代码,也可能运行中断程序等),则不能保证a的初始值。所以最好采用第二种形式。
海纳百川  有容乃大
费解ing,“对于全局变量,应该没什么问题。但对于局部变量,若采用第一种形式,……“
因该对局部变量没问题吧?函数不可重入,不就是因为全局变量被修改吗?
全局变量在RAM中占一个固定的地址,当函数调用某个全局变量时,程序员应该知道此时它的数值所代表的含义,而不会是一个随机的数。全局变量可以用来传递参数。
但局部变量并没有固定的地址,它分配在堆栈中,只是调用某个函数时,才临时分配一个地址。当函数调用结束时,堆栈空间就会释放。局部变量不能用于传递参数。
海纳百川  有容乃大
例不能使用: int a=5; function{ a+=3;}
要写城 : int a; function{a=5;a+=3;}
这个例子应该就是针对全局变量来说的吧,局部变量肯定是定义在函数内部的啊
可能我第一个帖子的描述不是很准确。但不管怎样,只要各位能了解全局变量和局部变量的具体物理规程,在编程中就能自如地运用,也就不必拘泥于某些书本上的句子了。
海纳百川  有容乃大
返回列表