int (*p)(int) 指向形参为int,返回值为int的函数 指针

int (p)(int)
p首先与
* 结合,p是个指针,
再与(int)结合,p指向参数为一个int的函数
再与int结合,p指向一个返回值为int的参数为一个int的函数
int p()是返回指针的函数
()表示函数
int
表示返回值为指针

https://blog.csdn.net/weixin_44421707/article/details/90722989

可以运行代码查看函数地址值,来理解.

#include <stdio.h>

/*   int (*p)(int)
	  p首先与*结合,p是个指针,
	 再与(int)结合,p指向参数为一个int的函数
	 再与int结合,p指向一个返回值为int的参数为一个int的函数*/ 

/*  int (*p)(int)是函数百指针,度如:
	int func(int x); //声明一个函数 
	int (*f) (int x);  //声明一个函数指针 
	f=func;  //将func函数的首地问址赋给指针f 
	int* p(int x);是一个返回值答为int型指针的函数的声明
	可以专用typedef 定义属函数指针类型,用于定义函数指针;

这个程序功能就是输入一个数字 ,然后对其输出格式进行选择(1代表二进制输出,2代表八进制,3是十六进制输出)。
其中change函数便是一个选择函数,按下1或者2或者3进行对应函数选择工作,主函数中先将num值传递给change,而
后change再将其传给two等转换函数,在change函数中,p便是选择指向函数的指针,main函数先将two等函数入口地址
传递给change中形参,change函数在对其进行调用。
*/ 

int change(int a,int (*p)(int a)); //p指向一个返回值为int的参数为一个int的函数 
int two(int a);
int eight(int a);

int main()
{
    int num;
    int choice;
    int res;
    int *p = NULL;

    //int sixteen(int a); 

    printf("Enter an integer:");
    scanf("%d",&num);
    printf("Bin output press 1\
            Octal output press 2\
            Hex output press 3\
            Please enter your choice:\n");
    scanf("%d",&choice);

    if(choice == 1)
    {
        printf("Bin:");
        printf("main.two的地址为:%d\n",two); 
        change(num, two);
        
    }
    if(choice == 2)
    {
        printf("Octal:");
        change(num, eight);
    }
    if(choice == 3)
    {
        printf("Hex:");
        printf("%X",num);
        //change(num, sixteen);
    }

    printf("\n");
    return 0;
}

int change(int a,int (*p)(int a))
{
	printf("p的地址为:%d\n",p);
    int res;
    res = (*p)(a);
    printf("%d\n",res);
}

int two(int a)
{
	printf("two的地址为:%d\n",two); 
    int i,res=0,k=1;
    while( a )
    {
        i = a % 2;
        res = k*i + res;
        k = k*10;
        a = a /2;
    }
    return res;
}

int eight(int a)
{
    int i,res=0,k=1;
    while( a )
    {
        i = a % 8;
        res = k*i + res;
        k = k*10;
        a =  a / 8;
    }
    return res;
}

原创文章 36 获赞 8 访问量 2775

猜你喜欢

转载自blog.csdn.net/qq_41398619/article/details/105424534
int
今日推荐