day13 指针
-----------------------------------------
回顾复习
指针的运算:指针偏移 -- 指向对象的数据类型
指针运算在数组中的应用
数组指针
指针数组
int *arr[3]; --- 指针数组
--- arr[下标] -- 解地址的形式
--- *(arr[下标]) --
int (*p)[3]; --- 数组指针 --- 指向二维数组里面第一个数组。
--- 地址:*(p+行偏移)+列偏移
--- 空间:*(*(p+行偏移)+列偏移)
-----------------------------------------
函数指针
指针函数
NULL和void *的指针
二级指针
拓展:动态内存申请
-----------------------------------------
1、函数指针
是指针,指向对象是函数。
函数指针指向同一类的函数,然后进行函数的调用。
函数名就是函数的地址,函数类型:除了函数名剩下的就是函数的类型。
定义函数:
int add(int a,int b)
{
return a + b;
}
int sub(int m,int n)
{
return m - n;
}
分析函数:
函数名:add
函数类型:int (int a,int b) --- int (int ,int )
函数名:sub
函数类型:int (int m,int n) --- int (int ,int )
定义函数指针:指向add
-- (*指针名) 放在返回值类型和(形参列表)的中间即可。
int (*p)(int ,int); // 内存会开一个4/8个字节的空间,用于存放函数的地址。
p = add;
通过函数指针调用函数
int res = (*p)(3,5); // add(3,5);
printf("%d&