-1
#include <iostream>
using namespace std;
void print(int a[])
{
    int size = sizeof(a)/sizeof(int);
    for ( int i = 0; i < size; i++){
        cout << a[i] << " ";
    }


}
int main()
{
    int a[] = {3, 4, 5, 0, 0, 1};
    print(a);
}

それは単純な関数であり、私の目的は明らかだと思います.すべてが順調に進んでいるようですが、関数は配列の最初の値のみを出力します.サイズを返してその値を確認しようとしましたが、それは1です.配列の最初の値。

それで、私は間違った人たちを何をしていますか?

4

1 に答える 1

0

C++ では配列を値で渡すことはできません。最初の要素へのポインターに減衰します。次の署名は、意味的に 100% 同等です。

void print(int a[]);
void print(int *a);

関数を関数テンプレートに変換し、参照によって配列を受け入れることができます。

template <size_t N>
void print(int (&a)[N])
{
  for (size_t i = 0; i < N; ++i) {
    cout << a[i] << ' ';
  }
}
于 2013-06-07T12:54:48.597 に答える