1、c语言结构的剖析
1.1、文件后缀格式
源码: .c 标准c源码 .cpp或c++ c++源码
头文件: .h 标准c头文件 .hpp或.h c++的头文件
汇编: .s
机器码 .o
1.2、#include 引入头文件
本质:是把头文件的代码加入到.c文件中
源码: 函数体、全局变量
头文件: 自定义的数据类型、宏定义、函数扩展声明
-》常用头文件:
stdio.h 标准输入输出
stdlib.h 标准库 内存的申请和处理函数
string.h 字符串处理函数
math.h 数字运算函数 -lm
<>
代表从 /usr/include 内找头文件
“ ”
代表从当前目录查找头文件
#include #if #ifndef #endif #define 不是c语言而是编译指令,所有这些指令在编译时都被替换为c代码
1.3、函数
main称为主函数,是程序的入口,必须唯一,其它函数都是从主函数开始被调用
注意:在一个函数中不可以嵌套定义函数,即不可以在一个函数内定义函数
格式:
返回类型 函数名(形参列表){
语句;
return 返回值;
}
返回类型: 代表了函数运算结果(返回值)的数据类型
1)数据类型: 基本类型 自定义类型
基本类型: int
l
ong short char double float
不确定 4 2 1 8 4 字节
自定义类型: 指针类型、每句、联合体、结构体、类
-》指针类型: 任意类型后面加 “*” 就称为指针类型,用于保存内存地址。
void 空类型
如果返回值类型为void代表函数没有返回值
void* 任意指针类型,保存任意类型的内存地址
2)return
本质:是结束函数。如果函数有返回类型,则必须用return 指定返回的值
return 结束函数
exit 结束程序
break 结束循环或switch
3)参数
形参:在函数定义时写的参数,本质是定义变量,也称为形参变量
实参:在函数调用时写的参数,本质是具体的值(常量、表达式、或具有值得变量),用途是给形参赋值
4)语句
表达式:具有运算符的公式
语句:具有分号的表达式
;用来结束语句
单纯的分号:空语句
5)变量的定义
格式:
类型 变量名[=值];
定义变量的时候就是分配内存的过程
初始化:即分配内存的同时赋值的过程
例: int a=12;
6)函数的调用
函数名(实参列表);
1.4、内存
程序: 保存在磁盘上的可执行文件
进程: 运行在内存中的程序
程序想要运行必须加载到内存中才可以运行
1)内存的组成(存在操作系统)
有内存条内存、磁盘空间、设备寄存器等组成(虚拟内存)
2)内存分块划分
参数段:
argc、argv 程序运行时,调用 main函数传入的参数(数据),argc-参数个数 argv-可以理解为是数组,存放的
字符串
字符串
数据段:
全局变量、静态变量、常量
堆栈段:
堆 由malloc 或 new(c++)申请的内存空间
栈
形参变量、局部变量、常量
代码段:
所有的函数
常量:
保存不变的量 如 12,“sdasd” 注意:字符串是常量
变量:
在运行中,内存中的数据可以发生改变的量
注意:每个函数内的局部变量尽管名称相同,但不是同一个内存,一个函数不能使用另一个函数内的变量
局部变量和全局变量同名,采用就近原则
使用{}的区域,可以称作代码块,有自己独立的栈空间。