|
发表于 2014-4-15 14:37:59
|
显示全部楼层
本帖最后由 gosfon 于 2014-4-15 14:39 编辑
前两个问题大家都说了,不过问题1要注意一点,你得把包含中断程序的那个文件加入在Keil(假设你用这个)的工程中。
我补充一下问题3和问题4
问题3,如果一个函数中有一个变量与全局变量同名(设为Temp),运行时会这样处理,在进入函数前,
先保存全局变量Temp的值到堆栈中,进入函数内后就和全局变量Temp无关了,函数内只和内部定义的Temp有关,
退出函数后,将全局变量Temp的值从堆栈中还原。
- #include <stdio.h>
- unsigned int delay(unsigned int Temp ) {
- while(Temp) {
- Temp--;
- }
- printf("局部变量Temp = %u\n", Temp);
- return Temp;
- }
- unsigned int Temp = 5; // 全局变量
- void main(void){
- printf("全局变量Temp = %u\n\n", Temp);
- delay(Temp); // 调用函数,其中delay函数有个同名的变量Temp
- printf("\n全局变量Temp = %u\n", Temp);
- }
- /* 运行结果
- 全局变量Temp = 5
- 局部变量Temp = 0
- 全局变量Temp = 5
- */
复制代码
问题4,和问题3的解决方法一样,函数内部的同名变量不会影响外部的同名变量,各算各的,里面的不会修改外面的,外面的也不会修改里面的 |
|