写C语言程序的四个阶段 第一阶段?? ?只写一个.c文件,在.c文件中只写一个main函数,把所有功能都放到main()中 第二阶段?? ?只写一个.c文件,在.c文件中除了main函数以外还有其他的功能函数 ?? ??? ??? ?函数的声明 ?? ??? ??? ?函数的返回值类型 函数名(参数列表);//该位置的参数叫做形式参数
?? ??? ??? ?函数的实现(函数的定义) ?? ??? ??? ?函数的返回值类型 函数名(参数列表)//该位置的参数叫做形式参数 ?? ??? ??? ?{ ?? ??? ??? ??? ?功能代码 ?? ??? ??? ?}
?? ??? ??? ?函数的调用 ?? ??? ??? ?函数名(参数);//该位置的参数叫做实际参数
?? ??? ??? ?函数名是函数的入口地址,函数名就是地址 ?? ??? ??? ?形式参数接收实际参数的值 ?? ??? ??? ?值传递?? ??? ? ?? ??? ??? ?地址传递?? ? 第三阶段?? ?多文件的方式实现项目 ?? ??? ??? ?main.c?? ??? ??? ??? ?存放main函数,以及功能函数的调用 ?? ??? ??? ?func.c?? ??? ??? ??? ?存放功能函数的实现 ?? ??? ??? ?func.h?? ??? ??? ??? ?存放功能函数的声明,以及各种定义 ?? ??? ??? ?makefile(Makefile)?? ?存放编译规则 第四阶段?? ?把.c文件做成库文件 ?? ??? ??? ?动态库 ?? ??? ??? ?静态库 二.makefile的简介 ?? ?一个项目工程中的源文件不计其数,这些源文件按类型、功能、模块分别放在若干个目录中. ?? ?makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译. ?? ?哪些文件需要重新编译,甚至于进行更复杂的功能操作. ?? ?因为 makefile 就像一个Shell脚本一样,其中也可以执行操作系统的命令. ---------------------------------------- ?? ?vim 打开多个文件 ?? ??? ?vim * -p?? ?多文件以标签的形式打开 ?? ??? ?注意 : 不能打开过多的文件,否则vim会崩溃 ?? ?用ctrl + alt + pgup / pgdn切换文件 ---------------------------------------- 三.C语言的作用域 1.空间的分布 ?? ?C语言会把内存分为5个区域(栈区 堆区 常量区 全局区 代码区) ?? ?-------------------------------------------------------- ?? ?./a.out->是由进程在执行可执行程序时分配存储空间 ?? ?->4Kb(物理)->4Gb(虚拟空间)
?? ?1Gb?? ??? ?Kernel(内核) ?? ?-------------------- ?? ?3Gb?? ??? ?命令行参数和环境变量int main(int argc, char *argv[]) ?? ??? ??? ?栈区 ?? ??? ??? ?👇 ?? ??? ??? ?空白 ?? ??? ??? ?? ?? ??? ??? ?堆区 ?? ??? ??? ?静态区(全局区)未初始化的(系统默认会初始化成0) ?? ??? ??? ?静态区(全局区)已初始化的 ?? ??? ??? ?常量区(RO DATA)只读的区域 ?? ??? ??? ?代码区
?? ?栈区?? ?不需要程序员来管理,自己开辟,自己释放 ?? ?堆区?? ?需要程序员来管理,手动开辟,手动释放(malloc realloc zalloc free) ?? ?静态区?? ?全局变量/static关键字修饰的变量 ?? ?常量区?? ?read only(只读) ?? ?代码区?? ?程序员没有办法管理
2.全局变量和局部变量 ?? ? ?? ?局部变量 ?? ?在某个函数内部或者程序块内部定义的变量叫做局部变量 ?? ?局部变量只能在该函数的内部 或者 该程序块的内部使用 ?? ?局部变量在函数外部是不可知的
?? ?全局变量 ?? ?全局变量是定义在函数外部的,通常写到程序的顶部 ?? ?全局变量在整个程序中生命周期都是有效的 ?? ?在任意函数的内部都可以访问全局变量
?? ?注意: ?? ?全局变量和局部变量可以同名 ?? ?如果出现了同名的情况,那么在执行函数时优先使用局部变量, ?? ?在该函数中全局变量被屏蔽了
|