简述C语言程序的开发步骤及各步的作用

  • 编辑,编辑源程序。一般会得到一个扩展名为.c的文件
  • 编译,生成二进制的目标代码,即机器代码,由众多个0和1组成的机器指令
  • 链接,链接程序,其结果是生成可执行文件
  • 运行,程序运行,其结果可能是达到了目的或者出错。

简述动态存储变量和静态存储变量的特点

静态存储

静态变量,全局动态变量都是静态存储,

存储在全局数据区,在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态存储变量是一直存在的,只会初始化一次。

动态存储

局部动态变量是动态存储,

动态存储变量是在程序执行过程中,使用它时才分配存储单元,存储在内存出栈数据区,使用完毕立即释放

总结:静态存储,只初始化一次,每次调用从变化后的值继续改变;动态存储,每次调用都从初始值开始

动态变量

全局动态变量

1)在所有函数的外部定义(包括主函数),定义之后的所有函数都能使用,属于静态存储

2)生命周期为从程序运行到程序退出,贯穿整个运行时间

3)无显式初始化时默认初始化值为0

局部动态变量

1)在函数内部定义,属于动态存储,作用于为当前函数

2)生命周期为从函数调用到函数退出

3)无显式初始化时默认初始化值为随机值

静态变量

全局静态变量

1)作用域为当前文件,从定义位置到文件结尾

2)生命周期为从程序运行到程序退出,即贯穿整个运行时间

3)无显式初始化时默认初始化值为0

动态全局变量可以通过extern关键字在外部文件中使用,静态全局变量不可以在外部文件中使用。

局部静态变量

1)作用域为当前函数

2)生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值

函数声明和函数定义的区别

声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。 定义则需要开辟内存。

函数的定义是一个完整的函数单元,包含函数类型、函数名、形参及形参类型、函数体等。

函数声明只是对编译系统的一个说明,是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。