1

我正在尝试做一个函数由指​​针指向的程序。它如下: -

这是第一个使用“void”返回类型的程序。

#include<stdio.h>
#include<conio.h>
void CharPrint(char *ptr);
main()
{
    char *str="Hello World";
    void (*ptr1)(char *ptr);
    ptr1=CharPrint;
    if((*ptr1)(str))
        printf("Done");
    return 0;
}
void CharPrint(char *ptr)
{
    printf("%s\n",ptr);
}

它会引发许多错误。他们是:-

在此处输入图像描述

第二个程序如下:-

#include<stdio.h>
#include<conio.h>
int CharPrint(char *ptr);
main()
{
    char *str="Hello World";
    int (*ptr1)(char *ptr);
    ptr1=CharPrint;
    if((*ptr1)(str))
        printf("Done");
    return 0;
}
int CharPrint(char *ptr)
{
    printf("%s\n",ptr);
    return 0;
}

该程序运行没有任何问题。

输出是: -

在此处输入图像描述

我的问题是,在第一个输出中,为什么它在第 9 行显示“Not an allowed type in function main”。其他行也引起了疑问,但这一行最困扰我。有什么帮助吗?

4

2 回答 2

7

您的第一个函数不返回任何内容。因此,您无法测试 if((*ptr1)(str)).

于 2013-01-19T22:05:16.313 回答
5
void (*ptr1)(char *ptr);
ptr1=CharPrint;
if((*ptr1)(str))
    printf("Done");

if如果返回值为,测试什么void?只需将最后两行更改为:

((*ptr1)(str));
于 2013-01-19T22:05:52.137 回答