gcc编译器:
1. 编译hello.c文件默认生成a.out文件
gcc hello.c
2. 编译分为4个流程步骤:
1.预处理:
将C语言代码展开(处理程序中与#号相关的代码)
#include <stdio.h>
将头文件stdio.h展开到代码中
#if
#elif
#else
#endif
#ifndef
#ifdef
根据条件编译规则将符合条件的代码加入到编译中,不符合条件的代码从编译中去除
#define
宏完成替换
gcc -E hello.c -o hello.i
2.编译:
将C语言代码编译成汇编代码
gcc -S hello.c -o hello.s
3.汇编:
将汇编代码编译成二进制代码
gcc -c hello.c -o hello.o
4.链接:
将二进制代码链接成为可执行程序
gcc hello.c -o hello
3. 程序错误:
1.语法错误
1.每次编译代码都寻找第一个错误并修改,直到错误完全解决为止
2.错误分为:error、warnning
error:无法生成可执行程序
warning:可以生成可执行程序,但程序中有可能出现错误
2.逻辑错误
1.加入打印解决问题
2.gdb调试器
gdb调试器:
1.编译代码时必须加-g选项,允许GDB调试
gcc filename.c -g
2.使用gdb调试代码
gdb ./a.out
3.输入命令完成GDB调试
l 查看代码
b 函数名/行号 设置断点
r 运行代码
n 单步执行
c 继续执行到下一个断点
p 变量名 查看变量值
s 进入函数内部调试
q 退出
查看代码 -> 设置断点 -> 运行代码 -> 单步执行
人工智能
=========================================================================C语言:
基础部分:
1. 基本数据类型、运算符、表达式
2. 常用的输入输出函数
3. 流程控制
重点部分:
4. 数组
5. 函数
6. 指针
进阶部分:
7. 构造数据类型
8. 内存管理
9. 链表
1. 进制转换:
二进制、八进制、十进制、十六进制
二进制:逢二进一
0、1
八进制:逢八进一
0、1、2、3、4、5、6、7
十进制:逢十进一
0、1、2、3、4、5、6、7、8、9
十六进制:逢十六进一
0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f
二进制、八进制、十六进制 -> 十进制:
对应位 * 对应位的权值再求和
十进制 -> 二进制、八进制、十六进制:
十进制数除以进制数得到的余数逆序排列
十进制 <-> 二进制
二进制 <-> 八进制、十六进制
八进制的1位 == 二进制的3位
十六进制1位 == 二进制的4位
2. 负数在内存中的存储
100 1100100
-100
负数在内存中存储:
1.先获得原码(去掉符号位,数字对应的二进制形式)
2.获得反码 (原码取反)
3.获得补码(反码+1)
4.获得内存中的值(符号位+补码)
3. 程序在计算机内部如何运行:
存储器:
1.内存
读写速度快
价格昂贵
掉电数据丢失
2.外存
读写速度慢
价格便宜
掉电数据不丢失
外存存储文件
a.out是存放在外存中的一个文件
./a.out时将该文件加载到内存中运行,内存负责与CPU交互执行代码内的运算处理
4.计算机内存的存储单位:
1 bit
1 byte == 8 bit
1 kb == 1024 byte
1 mb == 1024 kb
1 gb == 1024 mb
1 tb == 1024 gb