質問

は、refまたは値で、デフォルトで渡される配列はありますか? おかげます。

役に立ちましたか?

解決

彼らはポインタとして渡されます。配列のサイズに関するすべての情報が失われている。この手段。あなたはより良い助言使用STDになります::あなたが選択したとして、値または参照で渡すことができますベクトルと、それはそれゆえすべての情報を保持ます。

ここで関数に配列を渡すの一例です。 sizeof(p)はポインタの大きさを与えるように、我々は、具体的要素の数を指定する必要が注意してください。

int add( int * p, int n ) {
   int total = 0;
   for ( int i = 0; i < n; i++ ) {
       total += p[i];
   }
   return total;
}


int main() {
    int a[] = { 1, 7, 42 };
    int n = add( a, 3 );
}

他のヒント

まず、あなたは、配列のコピーが作成されるという意味での値で配列を渡すことはできません。あなたはその機能、使用std::vectorまたはboost::arrayが必要な場合。

通常、最初の要素へのポインタが値で渡されます。配列のサイズは、この過程で失われ、個別に渡さなければなりません。以下の署名はすべて同じです。

void by_pointer(int *p, int size);
void by_pointer(int p[], int size);
void by_pointer(int p[7], int size);   // the 7 is ignored in this context!

あなたが参照渡ししたい場合は、サイズはタイプの一部であります:

void by_reference(int (&a)[7]);   // only arrays of size 7 can be passed here!

多くの場合、あなたは別の静的に既知のサイズの機能を使用できるように、テンプレートと参照渡し組み合わせます:

template<size_t size>
void by_reference(int (&a)[size]);

希望このことができます。

アレイは、特別である:彼らは常に配列の最初の要素へのポインタとして渡される

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top