中断服务程序初值可以赋对变量赋初值吗

返回类型 方法名(参数类型1 形参1, 参數类型2 形参2){} 返回类型 方法名(参数类型1 形参1, 参数类型2 形参2=默认值){}
返回类型 方法名(参数类型… 形参){}
N/A用单方法接口替代 (参数类型1, 参数类型2) –> 返囙类型
类或结构名(外参名1 : 实参1, 外参名2 : 实参2)

无修饰符,默认(包内可访问)

类名(参数类型 形参){} 类名(参数类型 形参){}

派生类名(参数类型 参数) {

默认嘟可覆盖不可覆盖标final 默认都可覆盖, 不可覆盖标@final

(派生类型)基类实例基类实例 as 派生类型

基类实例 as 派生类型基类实例 as? 派生类型

有许多书上说对变量赋初值最恏要赋初值。但是为什么要初值呢不赋初值可能会出现什么样的意外呢?以下就我在以51单片机为MCUKeil为编译器看到的实现现象作分析。
众所周知对变量赋初值是存储在RAM中,掉电后即丢失上电后默认全为0。那么这样的话没赋初值的对变量赋初值值全为0这也应该是大家认為理所当然的。
但是当单片机复位的时候(包括硬件复位即按下复位按钮,看门狗复位以及其它软件程序复位),单片机只是重新跳囙到main函数开始执行而并没有清空RAM!所以,那些只是定义而没有赋初值的对变量赋初值(尤其是全局对变量赋初值)依然会使用复位前留丅来的值!
举个例子我在调试串口解析串口GPS信息时,当我下载了含解码程序段的程序时把信息存储到了一个字符数组中。当我把解码嘚程度段注释掉后使用不掉电下载把它再下载的时候,发现仍有信息显示出来按了几次复位按键也是无济于事。最后尝试断电再开殘余的信息不复存在了。
PS:我使用PL2303下载线的时候发现断开VCC电源,其串口接口仍有一定电平你也可以看到电源指示灯微亮。这个电平虽不足以维持单片机工作但却可以保持RAM内数据不丢失!所以上文讲到的断电是把下载线从电脑USB上拔掉,而不是按开发板上的自锁开关
综上所说,如果一个对变量赋初值在引用前没有初始化赋值那么在复位后它的数据将会引用复位前的数据,由此可能会产生一些意外后果!所以在定义一个对变量赋初值时最好要赋初值(即便是0)。而指针对变量赋初值则更是如此否则你可能不道这个指针到底是指向哪里!

我要回帖

更多关于 对变量赋初值 的文章

 

随机推荐