1

C++ で C++ 配列を引数として渡そうとしたところ、いくつかの問題が発生しました。私はこれを経験しましたが、それでも問題を解決できませんでした。

C++
#include<iostream>
using namespace std;

void comb(int a[])
{
    int alen = sizeof(a)/sizeof(*a);
    cout << alen << endl;
    /* Since 'I' know the size of a[] */
    for(int i = 0; i < 7; i++)
    cout << a[i] << " ";
    cout << endl;
}

int main()
{ 
    int a[] = {1,2,3,4,5,6,7};
    comb(a);
}

Output
2
1 2 3 4 5 6 7

私の質問は、配列のサイズが 2 として計算されるのはなぜですか?

4

2 に答える 2

6

関数の引数として配列を指定すると、ポインターに分解されます。配列の (バイト) サイズではなく、ポインターsizeof(a)のサイズも同様です。長さを別の引数として渡すか、 のようなものを使用する必要があります。std::vector

于 2013-07-24T20:02:29.423 に答える