-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 回答