-
指针数组(多个指针变量)
int *p[3]表示一个一维数组内存放三个指针变量,分别是p[0]、p[1]、p[2]
-
数组指针(行指针)
int (*p)[]; int a[3][4]; p=a;//将二维数组首地址a[0][0]赋给p p++;//p=p+1,p跨过a[0][]指向a[1][]***************************
-
数组指针类型
void main()
{
int a[10];//a代表的是数组首元素的地址 &a代表数组的地址,&a+1步长40
{
//定义一个数组类型
typedef int (myTypeAraay)[10];
myTypeArray myArray;
myArray[0] = 10;
printf("%d \n",myArray[0]);
}
{
//定义一个数组指针类型
typedef int (*pTypeArray)[10];//int *p
pTypeArray mypArray;//sizeof(int)*10
mypArray = &a;
(*mypArray)[0]=20;
printf("a[0]:%d \n",a[0]);
}
}
- 函数指针基本语法知识梳理
1.定义一个函数类型
add(1,2)//直接调用
typedef int(A)(int a,int b);
A *p1=NULL;
p1 = add;
或者
p1 =&add;
p1(3,4)
2.定义一个函数指针类型
typedef int (*A)(int a,int b)
A p2=NULL;
p2 = add;
p2(3,4)
3定义一个函数指针(指向函数入口地址)
add(1,2)//直接调用
int (*A)(int a,int b);//定义了一个变量
A = add;
A(7,8)
-
作用
把任务调用者和任务编写者分离
-
本质
把函数参数和函数返回值提前约定(提前分配内存,根据具体类型具体 调用,类似vptr指针->虚函数表->函数入口)
函数指针本质-------回调函数