指向数组的指针
int a[10]; //a代表数组首元素的地址,&a代表整个数组的地址
// a+1步长为4个字节,&a+1的步长为40个字节
typedef int typearray[10]; // 定义typearray为数组类型
typearray myarr;
myarr[0] = 0;
//定义指针数据类型
typedef int (*parray)[10];
parray myparr; //myparr为指向大小为10的数组的指针
myparr = &a;
//定义一个指向数组的指针
int (*myparray)[10]; //myparray为指向数组的指针
myparray = &a;
a代表数组首元素的地址,&a代表整个数组的地址,a+1步长为4个字节,&a+1的步长为40个字节。
函数指针
int add(int a,int b)
{
return a+b;
}
int main()
{
add(1,2); //直接调用,函数名为函数的入口地址
{
//定义一个函数类型
typydef int (Myfunctype) (int a,int b); //Myfunctype为函数类型
Myfunctype *mypointfunc = NULL;//定义一个函数指针
mypointfunc = &add; //指向add函数
mypointfunc = add; //指向add函数,这两句都可以
mypointfunc(3,4);//间接调用
}
//定义函数指针类型
{
typydef int (* MyPfunctype) (int a,int b);
MyPfunctype Myptype;//定义一个函数指针
MyPfunctype = add;
MyPfunctype(4,5);
}
//定义函数指针
{
int (* MyPfunc) (int a,int b);//定义一个函数指针
MyPfunc = add;
MyPfunc(5,6);
}
}
函数指针作为函数的参数
int add(int a,int b)
{
return a+b;
}
typedef int (* MyPfuntype) (int a,int b);//定义函数指针类型
//函数指针作为函数参数
int Myadd(MyPfuntype mypadd)
{
int c = mypadd(3,4);
return c;
}
int Myadd2(int (* mypadd) (int a, int b))
{
int c = mypadd(3,4);
return c;
}
int main()
{
Myadd(add);
Myadd2(add);
}