-4

こんにちは、私はこの機能を持っています:

void vector(int imputC[]) { 
    //return v*   
    //imputC[].lenght
    int a =sizeof(imputC) / sizeof(int);
    // float v[2 * a + 2];
    // v[0]=0;
    for (int i = 0; i < a ; i++)
        v[i] =(float)imputC[i];

    for(int j = 0; j < 10; j++)
        cout << a << endl;
}

そしてメイン:

int main() {
    int array[] = { 23, 5, -10, 0, 0, 321, 1, 2, 99, 30 };
    // float *v[22];
    vector(array);
}

a のサイズは 1 です。なぜですか? わかりません、それが唯一のオブジェクトだと思います。

4

2 に答える 2

3

sizeof(imputc)配列はポインターとして渡され、元の配列のサイズを保持しないため、式は関数では機能しません。したがって、その式は、ポインターが指す配列ではなく、ポインターのサイズのみを返します。

配列内の項目数を知る必要がある関数に配列を渡す必要がある場合は、常にその関数に引数として配列サイズを渡す必要があります。

于 2013-01-10T17:22:35.450 に答える
1

配列型を引数として取る関数の宣言では、配列型は最初の要素へのポインターに崩壊します。そう

void vector(int imput[])

と同じです

void vector(int *imput)

配列引数を取る関数には、配列内の要素数を取得する別の方法が必要です。

于 2013-01-10T17:23:27.160 に答える