整理C语言指针,函数指针,数组指针,指针数组的区别并给出一个简单示例
指针:
表示地址。
定义格式: 存储类型 数据类型 *指针变量名
例如:
int a=100;
int *p=&a;
函数指针:
本质上是一个指针,用来指向函数的首地址,多用于回调函数
定义格式: 存储类型 数据类型 (*函数指针变量名)(参数列表)
例如:
void Sum(int a,float b)
void (*p)(int,float)=Sum2
指针函数:
本质上是一个函数,返回一个地址,不可以返回局部变量的地址
定义格式:
数据类型 *函数名(参数列表)
{
函数体;
return 地址;
}
例如:
int *fun()
{
int a=1,b=100;
int arr[2];
arr[0]=a;
arr[1]=b;
return arr;
}
指针数组:
本质上是一个数组,存储多个类型相同的指针
定义格式: 存储类型 数据类型 *指针数组变量名[常量表达式]
例如:
int a=1,b=2,c=3,d=4;
int *p[4]={&a,&b,&c,&d};
数组指针:
本质上是一个指针,用来指向二维数组的地址,多用于传参和返回
格式: 存储类型 数据类型 (*指针变量名)[常量表达式]
例如:
int arr[2][3]={1,2,3,4,5,6};
int (*p)[3]=arr;