作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用一个函数指针来调用另一个函数,但它给了我一个错误。我不明白这个错误。
这是我的代码:
#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/
我是一名优秀的程序员,十分优秀!