1 数组指针类型
void main(){
int a[10];
{
typedef int(myTypeArray)[10];
myTypeArray myArray;
myArray[0] = 10;
printf("%d \n", myArray[0]);
}
{
typedef int(*PTypeArray)[10];
PTypeArray myPArray;
printf("sizeof(myPArray) %d \n", sizeof(myPArray));
myPArray = &a;
(*myPArray)[0] = 20;
printf("%d \n", a[0]);
}
{
int(*MyPointer)[10];
printf("sizeof(MyPointer) %d \n", sizeof(MyPointer));
MyPointer = &a;
(*MyPointer)[0] = 40;
printf("%d \n", a[0]);
}
}
2 函数指针类型
int add(int a, int b) {
printf("func add ...\n");
return a + b;
}
void main() {
add(1, 2);
{
typedef int (MyFuncType)(int a, int b);
MyFuncType* myPointerFunc = NULL;
myPointerFunc = &add;
myPointerFunc(3, 4);
}
{
typedef int (*MyPointerFuncType)(int a, int b);
MyPointerFuncType myPointerFunc;
myPointerFunc = add;
myPointerFunc(5, 6);
}
{
int (*MyPointerFunc)(int a, int b);
MyPointerFunc = add;
MyPointerFunc(7, 8);
}
}
3 函数指针做函数参数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int myadd(int a, int b) {
printf("func add ...\n");
return a + b;
}
int myadd2(int a, int b) {
printf("func add2 ...\n");
return a + b;
}
int myadd3(int a, int b) {
printf("func add3 ...\n");
return a + b;
}
int myadd4(int a, int b) {
printf("func add4 ...\n");
return a + b;
}
typedef int (*MyTypeFuncAdd)(int a, int b);
int MainOp(MyTypeFuncAdd myFuncAdd) {
int c = myFuncAdd(5, 6);
return c;
}
int MainOp2(int (*MyPointerFuncAdd)(int a, int b)) {
int c = MyPointerFuncAdd(5, 6);
return c;
}
void main() {
MyTypeFuncAdd myFuncAdd = NULL;
myadd(1, 2);
myFuncAdd = myadd;
myFuncAdd(3, 4);
MainOp(myadd);
MainOp2(myadd);
MainOp(myadd2);
MainOp(myadd3);
MainOp(myadd4);
}