0

私はこの方法を見つけて理解しました:

void PrintString(char *String_Ptr)
{
    //Print String
}

関数宣言でポインターをパラメーターとして宣言する他の方法が見つかりません。

宿題の質問から、同じことを行う他の方法があると信じるようになりました。

4

1 に答える 1

1

質問に記載されている以外にもいくつかの可能性があります。

String_Ptr以下は、配列であることを示唆する欺瞞的な構文にもかかわらず、問題のバージョンとまったく同じです。そうではなく、ポインタです:

void PrintString(char String_Ptr[])
{
    printf("%s\n", String_Ptr);
}

に渡したい文字の配列の長さ (たとえば 10 文字) がわかっている場合は、PrintString()そのような配列へのポインターを渡すこともできます。

void PrintArray10(char (*Array_Ptr)[10])
{
    printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}

int main(void)
{
    char a[10] = "Blah!";
    PrintString(a); // first 2 methods
    PrintArray10(&a); // 3rd method
    return 0;
}

次の方法でポインターをカモフラージュすることもできますtypedef

typedef char* pchar;

void PrintString(pchar String_Ptr)
{
    printf("%s\n", String_Ptr);
}

typedef char (*pchararr10)[10];

void PrintArray10(pchararr10 Array_Ptr)
{
    printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}
于 2012-10-22T00:31:46.113 に答える