指针可以指针内存的任意一块地址,加快程序的执行速度,使程序更简洁
指针:就是地址,地址表示每个字节的编号
指针变量:存储指针的容器
函数指针:本质上是一个指针,用来指向函数的首地址,多用于回调函数
定义格式: 存储类型 数据类型 (*函数指针变量名)(参数列表)
int Sum(int a,int b)
{
return a+b;
}
int fun(int (*p)(int,int),int a,int b)
{
return p(a,b);
}
int main(int argc, const char *argv[])
{
int a=1,b=100;
int s=fun(Sum,a,b);
printf("s=%d\n",s);
return 0;
}
指针函数:本质上是一个函数,返回一个地址,不可以返回局部变量的地址
定义格式:
数据类型 *函数名(参数列表)
{
函数体;
return 地址;
}
数组指针:本质上是一个指针,用来指向二维数组的地址,多用于传参和返回
格式: 存储类型 数据类型 (*指针变量名)[常量表达式]
int arr[2][3]={1,2,3,4,5,6};
int (*p)[3]=arr;
指针数组:本质上是一个数组,存储多个类型相同的指针
定义格式: 存储类型 数据类型 *指针数组变量名[常量表达式]
int a=1,b=2,c=3,d=4; --->int arr[4]
int *p1=&a;
int *p2=&b;
int *p3=&c;
int *p4=&d;
int *p[4]={&a,&b,&c,&d};
p[0]-->&a
p[1]-->&b