1

重複の可能性:
配列名は C のポインターですか?

int *として定義されている関数に変数を渡しましたfunc(int var[])が、コンパイラは、互換性のないポインター型から引数を渡すと不平を言っていました。違いは何ですか、それともまったく違いはありませんか?

4

1 に答える 1

2

関数宣言R foo(T[])R foo(T *)は、すべての型で同一ですT

あなたのエラーは別の場所にあります。

(後者は呼び出し中に適切なポインターに減衰するため、afooへのポインターTまたは s の配列の名前で呼び出すことができます。)T

例:

void foo(int *);
void bar(int[]);

void example(int * a)
{
    int n = 10;
    int p[] = { 1, 2, 3 };

    foo(a);     bar(a);
    foo(p);     bar(p);    // all those are OK
    foo(&n);    bar(&n);
}
于 2012-11-29T22:12:01.510 に答える