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);
}

多くのエラーをスローします。彼らです:-

ここに画像の説明を入力

2 番目のプログラムは次のとおりです。

#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ですか?最後の2行を次のように変更するだけです。

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