简述C语言程序的开发步骤及各步的作用
- 编辑,编辑源程序。一般会得到一个扩展名为.c的文件
- 编译,生成二进制的目标代码,即机器代码,由众多个0和1组成的机器指令
- 链接,链接程序,其结果是生成可执行文件
- 运行,程序运行,其结果可能是达到了目的或者出错。
简述动态存储变量和静态存储变量的特点
静态存储
静态变量,全局动态变量都是静态存储,
存储在全局数据区,在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态存储变量是一直存在的,只会初始化一次。
动态存储
局部动态变量是动态存储,
动态存储变量是在程序执行过程中,使用它时才分配存储单元,存储在内存出栈数据区,使用完毕立即释放
总结:静态存储,只初始化一次,每次调用从变化后的值继续改变;动态存储,每次调用都从初始值开始
动态变量
全局动态变量
1)在所有函数的外部定义(包括主函数),定义之后的所有函数都能使用,属于静态存储
2)生命周期为从程序运行到程序退出,贯穿整个运行时间
3)无显式初始化时默认初始化值为0
局部动态变量
1)在函数内部定义,属于动态存储,作用于为当前函数
2)生命周期为从函数调用到函数退出
3)无显式初始化时默认初始化值为随机值
静态变量
全局静态变量
1)作用域为当前文件,从定义位置到文件结尾
2)生命周期为从程序运行到程序退出,即贯穿整个运行时间
3)无显式初始化时默认初始化值为0
动态全局变量可以通过extern关键字在外部文件中使用,静态全局变量不可以在外部文件中使用。
局部静态变量
1)作用域为当前函数
2)生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值
函数声明和函数定义的区别
声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。 定义则需要开辟内存。
函数的定义是一个完整的函数单元,包含函数类型、函数名、形参及形参类型、函数体等。
函数声明只是对编译系统的一个说明,是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。