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

发布时间:2024年01月21日
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;
}
文章来源:https://blog.csdn.net/m0_37149062/article/details/135719107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。