该文章内容整理自《C程序设计(第四版)》、《高质量C编程指南》、以及网上各大博客
一个C程序有多个程序模块组成,每个程序模块作为一个源程序文件,一个源程序文件是一个编译单位
函数定义
函数声明(由函数首部,即函数原型表示):
类型名 函数(形参表列);
函数声明主要用于对函数调用的合法性进行检查。此时,参数名可以省略,也即可写为float add(float, float);。另外形参数组可以不指定大小,直接在后面添加方括号,而多维数组时可以省略第一维的大小,剩下的都不能省略。注意函数声明可以在函数外或者是函数内
函数调用:
函数名(实参表列)
实参向形参的数据传递是值传递,而用数组名作为函数实参时传递的是数组首元素的地址,要想禁止在函数调用时对数组进行修改,可以在形参声明处加上const。将数组作为参数传递给函数时,一种做法是传数组名加数组元素数量,即int func(int a[], int n),另一种做法是直接传数组头尾指针,即int func(int * begin, int * end)
函数定义:
类型名 函数(形参表列) {函数体}
变量存储
变量声明与定义的区别在于是否需要建立存储空间。内存中程序的存储空间可分为5部分:程序代码区(二进制代码)、全局/静态存储区(全局变量、static变量)、动态存储区(分为堆(malloc分配)和栈(局部变脸、形参、函数自动变量、函数调用时现场保护和返回地址等))、常量存储区&