在c++中复制数组

copy array in c++

本文关键字:复制数组 c++      更新时间:2023-10-16

嗨,我有这个函数:

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;
}

And main:

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

a的大小为1。为什么呢?我不明白,我想那是唯一的对象。

表达式sizeof(imputc)在您的函数中不起作用,因为数组作为指针传递并且不保留原始数组的大小。因此,该表达式只返回指针的大小,而不是它所指向的数组的大小。

如果必须将数组传递给需要知道数组中元素个数的函数,则必须始终将数组大小作为参数传递给该函数。

在以数组类型作为实参的函数声明中,数组类型衰变成指向第一个元素的指针。所以

void vector(int imput[])

相同
void vector(int *imput)

接受数组参数的函数需要有其他方法来获取数组中的元素个数