重複の可能性:
配列名は C のポインターですか?
int *
として定義されている関数に変数を渡しましたfunc(int var[])
が、コンパイラは、互換性のないポインター型から引数を渡すと不平を言っていました。違いは何ですか、それともまったく違いはありませんか?
重複の可能性:
配列名は C のポインターですか?
int *
として定義されている関数に変数を渡しましたfunc(int var[])
が、コンパイラは、互換性のないポインター型から引数を渡すと不平を言っていました。違いは何ですか、それともまったく違いはありませんか?
関数宣言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);
}