1.数组指针
例如整型数组指针 int (*p)[] ,他的主要的作用是用来指向二维数组的。
int matrix[2][10];
int (*p)[10]=matrix; //间接访问高于下标引用
printf("%d",(*p)[1]);
2.指针数组
int *p[10]; 在函数形参里处理指针数组时,在代码块中会用到指针的指针,即int **P.
example:
char *p[] //下标引用高于间接访问
{
"do",
"for",
"if",
"register",
NULL
}
printf("%c",p[0][0]);
3.指针函数
int *f ();//f是一个函数,它返回的类型是指向整型的指针。
4.函数指针
int (*f) ();//f是一个函数指针,它所指向的函数返回一个整型值。常用于回调函数
example:
int f();
int (*pf)(int i)=&f;
int ans;
ans = f(25);//1
ans = (*pf)(25);//2
ans = pf(25);//3
//这三条语句效果都是一样的。第一条语句简单地使用名字调用函数f,函数名f首先被转换为一个函数指针,该指针指定函数在内存中的位置。然后,函数调用操作符调用该函数,执行开始于这个地址的代码。第2条语句对pf执行简接访问操作,它把函数指针转换为一个函数名。