2011-11-08 67 views

答えて

0

関数は配列をC++の引数として取りますが、配列はポインタへと崩壊するので、ここでは多かれ少なかれ同じことです。

+2

実際には、配列を参照することはできますが、それは減衰しません。 –

+0

'template void function(int(&array)[len]);'技術的には、これは参照によるものですが、技術的には同じではありません... –

+0

あなたは配列を参照しています。配列ではありません。 –

1

アレイパラメータ。 int arr[]は、 であり、本質的には であり、第1の要素へのポインタと同じである。ポインタを整数に、長さを1に渡すと、配列のように1つの整数を表示させることができます。

+0

「本質的に」ストライク。同じです。コンパイラは配列引数をポインタ引数に書き換えます。 – fredoverflow

6

パラメータのタイプによって異なります。

void function(int param[]); //you can pass a int* 
void function(int param[7]); //you can pass a int* 
void function(int (&param)[7]); //you CANNOT pass a int* 
+0

ありがとう、インターネット人。私は配列とポインタの関係を知っていましたが、私が行っていたことの正当性についてはわかりませんでした。 –

+0

int [100]、int [2]、さらにはNULLを指していても、最初の2つの文字に_any_ 'int *'を渡すことができます! –

関連する問題