• c函数指针和指针函数如何使用何定义;如何调用使用


    #include <stdio.h>
    
    int * sum(int x); //声明一个 指针函数 返回类型位一个指针变量 可以通过*p来获取值
    int (*pfun)(int,int);//声明一个 函数指针
    int max(int x,int y);//声明全局函数
    int getname(int x,int y, int(*p)(int,int));//声明函数指针
    int add(int x,int y);
    int main(void)
    {
    	//int name = 400;
    	int *re = sum(100);
    	//sleep(1);
    	printf("%d %p
    ",*re,re);
    	//sleep(2);
    	printf("%d %p
    ",*re,re);//严重有问题 居然值不一样了
    	
    	//max = 0x12345;//错误 函数名和数组名的地址不允许修改
    	pfun = max;//初始化函数指针 指向max函数的函数指针变量
    	printf("sum的入口地址:%p
    ",sum);
    	printf("max的入口地址:%p pfun的地址:%p max的大小:%d
    ",max, pfun, pfun(10,20));//函数名就是函数的入口也是地址
    	
    	int x = getname(44,55,max);//函数名称 就是地址就是指针
    	printf("x的值:%d
    ",x);
    	printf("x+y的值:%d
    ",getname(10,20,add));
    	
    	
    	return 0;
    }
    //定义函数指针变量
    int getname(int x, int y,int(*p)(int,int)){
    	
    	return p(x,y);
    }
    int add(int x, int y)
    {
    	return x+y;
    }
    int max(int xx, int yy){
    	return xx>yy?xx:yy;
    }
    int * sum(int x){
    	int static sum =0;//static 修身的变量在数据段;不会被函数栈回收
    	int *p = ∑//最好是定义一个指针变量
    	int i;
    	for(i=1;i<=x;i++){
    		sum +=i;
    	}
    	return p;
    	//return ∑//会警告 返回的是局部变量的地址
    }
    

      

      

    函数名和数组名不允许修改其地址;因为是常量;

    函数指针:返回的是函数的类型数据

    指针函数:返回的是一个指针地址

    函数名和数组名一样都是一个指针;即是地址

  • 相关阅读:
    [leetcode] Maximum Depth of Binary Tree
    [leetcode] Binary Tree Zigzag Level Order Traversal
    [leetcode] Binary Tree Level Order Traversal
    软工第二次极限测试
    动手动脑的问题以及课后实验性的问题3
    计算几何--半平面交与平面区域
    拉格朗日插值法
    计算几何--最小圆覆盖与最小球覆盖
    计算几何--圆与球
    程序员修炼之道读后感1
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8539084.html
Copyright © 2020-2023  润新知