【1】GCC
1--- gcc 1.c
./a.out
2--- gcc 1.c -o test
./test
3--- gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
./hello
4--- gcc hello.c -Wall
【2】GDB
gcc -g 1.c -o test
gdb ./test
l //查看程序
r //运行
b 行数 //添加断点
r
n //单步运行
p 变量名 //查看变量的值
info b //查看所有断点
d 断点编码//删除断点
q //退出
【1】、指针
1--- 指针变量:专用于存放地址的变量
2--- 地址常量:内存地址
【2】、定义
int a = 10;
int *p = &a;
//p指向a:p存储a的地址
//变量名:p
//类型:int *
【3】运算符
1--- *
1、类型的一部分
2、指针解引用(钥匙-取值)
3、指针降级
2--- &
取地址符
3--- +-
指针的加减:加减的是单位长度
单位长度:指针所指向的数据类型所占的字节数
4--- []
[]:指针加单位长度后,取内容运算
int a[5];
int *p = a;
a[i] <==> *(a + i)
p[i] <==> *(p + i) //p是指针变量,a是地址常量
【4】指针的大小
占4字节(32位操作系统)
【5】指针数组
int * a[3];
【6】数组指针
int a[3][4];
int (*p)[4] = a;
【7】指针函数
返回值是指针的函数
【8】函数指针
int fun(int a,int b);
int (*p)(int a,int b);
本质:指针,指向一个函数的入口地址
【9】函数指针数组
本质:数组
元素:函数指针类型
【10】
【10】
-------------
-------------
*************
*************
*************
int fun(int 2)
{
if(2 > 0)
{
puts("------------");
i--;
fun(i); ==========》 int fun(int 1)
} {
if(1 > 0)
puts("************"); {
return 0; puts("----------");
} i--;
fun(i);
}