ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【已解决】分别在栈上和堆上开辟函数指针内存

2026/8/9 9:04:38 拓冰建站 浏览量
【已解决】分别在栈上和堆上开辟函数指针内存
int(** x(int (*z)(int,int),int,double))(int);
int(** )(int);
Z x(int(*z)(int,int),int,double)
  • x的返回值二级函数指针,参数,有一个函数指针,int,double
  • x是一个函数
  • z函数指针
int (*p)[5];//指向数组的指针
int *p[5];//数组,每一个元素是一个指针
int (*p[5])(int,int);//函数指针数组
int ((*p))[5](int,int);//指针指向函数数组
int (* (*p)[5])(int a,int b);//指向函数指针数组的指针

示例

#include<stdio.h>
int add(int a, int b) {return a + b;
}
int sub(int a, int b) {return a - b;
}
int mul(int a, int b) {return a * b;
}
int div(int a, int b) {return a / b;
}int main() {//int(**pp)(int, int) = (int(*[])(int, int)) { add, sub, mul, div };int(*p[4])(int a, int b) = { add,sub,mul,div };int(**pp)(int, int) = malloc(sizeof(int(*)(int, int)) * 4);pp[0] = add;pp[1] = sub;pp[2] = mul;pp[3] = div;for (int i = 0; i < 4; i++) {printf("\n%d", (*(p + i))(100, 10));printf("\n%d", pp[i](100, 10));}getchar();return 0;
}