gpt4 book ai didi

c - 这个错误是什么意思?类型 "void"的参数与类型 "void (*)(int a)"的参数不兼容

转载 作者:行者123 更新时间:2023-12-01 23:24:37 25 4
gpt4 key购买 nike

我正在尝试使用一个函数指针来调用另一个函数,但它给了我一个错误。我不明白这个错误。

这是我的代码:

#include<stdio.h>
#include<stdlib.h>

void print(void (*ptr)(int));
void printint(int);

int main()
{
char a;
int b;
scanf("%c %d",&a,&b);
print(printint(b));
return 0;
}

void print(void (*ptr)(int a))
{
ptr(a);
}

void printint(int a)
{
// printf("executed");
printf("%d",a);
}

我想我错误地使用了函数指针。有人可以解释如何以正确的方式实现这个程序吗?

最佳答案

问题是 print(printint(b));调用 printint(b) 然后传递它的 返回值(void)到print()。因此错误。

你需要将b值在一个单独的参数中传递给print(),然后它才能将值传递给printint(),例如:

#include <stdio.h>
#include <stdlib.h>

typedef void (*funcptr)(int);

void print(funcptr, int);
void printint(int);

int main()
{
char a;
int b;
scanf("%c %d", &a, &b);
print(printint, b);
return 0;
}

void print(funcptr ptr, int a)
{
ptr(a);
}

void printint(int a)
{
// printf("executed");
printf("%d", a);
}

关于c - 这个错误是什么意思?类型 "void"的参数与类型 "void (*)(int a)"的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67494136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com