数组指针和函数指针两个都有三种用法,形式也类似
1、定义一个数组类型
2、定义一个数组指针类型
3、定义一个指向数组类型
的指针 数组类的指针
void main()
{
int a[10];//a代表的是数组首元素的地址,&a代表整个数组的地址,步长不一样
//定义一个数组类型
typedef int (myTypeArray )[10];
myTypeArray myArray;
myArray[0]=10;
cout<<myArray[0]<<endl;
//定义一个指针数组类型
typedef int (*PTypedef)[10];
PTypeArray myPArray;//sizeof(int)*10
myPArray=&a;
(*myPArray)[0]=20;
cout<<a[0]<<endl;
//定义一个指向 数组类型的指针 数组类的指针
int (*MyPointer)[10];//变量 告诉C编译器给我分配内存
MyPointer =&a;
(*MyPointer)[0]=40;
cout<<a[0]<<endl;
}
函数指针基本语法梳理
1、如何定义一个函数类型
2、如何定义一个函数指针类型
3、如何定义一个函数指针(指向一个函数的入口地址)
int add(int a,int b)
{
cout<<"func add......"<<endl;
return a+b;
}
void main()
{
add(1,2);
//定义一个函数类型
typedef int (MyFuncType)(int a,int b);//定义一个类型
MyFuncType *myPointerFunc=NULL;//此处必须声明一个指针变量,不能直接声明这个类型的变量
//MyFuncType myPointerFunc=add;//err
myPointerFunc=&add;
myPointerFunc(3,4);//间接调用
myPointerFunc=add;//这样也可以,兼容历史版本的原因
myPointerFunc(3,4);//间接调用
//定义一个函数指针类型
typedef int (*MyPointerFuncType)(int a,int b);
MyPointerFuncType myPointerFunc=add;
//MyPointerFuncType myPointerFunc=&add;折两种赋值方法均可
myPointerFunc(5,6);
//定义一个函数指针
int(*MyPonterFunc)(int a,int b)//定义一个变量
MyPonterFunc=add;
MyPonterFunc(7,8);
system("pause");
}