2013-01-10 65 views
-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); 
} 

和大小的是1,這是爲什麼?我不明白,我認爲這是唯一的對象。

+3

這是你能想出的最佳格式嗎? – Nawaz

+0

準確地說,你爲什麼要打印10次? –

+0

[sizeof()](http://en.wikipedia.org/wiki/Sizeof)不適用於此。 *「sizeof用於計算任何數據類型的大小,以用來表示類型**」*所需的**字節數量度量。使用功能前閱讀文檔。 – m0skit0

回答

3

表達式sizeof(imputc)在您的函數中不起作用,因爲數組作爲指針傳遞並且不保留原始數組的大小。所以表達式只返回指針的大小而不是它指向的數組。

如果必須將數組傳遞給需要知道數組中項目數的函數,則必須始終將數組大小作爲參數傳遞給該函數。

1

在將數組類型作爲參數的函數聲明中,數組類型衰減爲指向第一個元素的指針。所以

void vector(int imput[]) 

相同

void vector(int *imput) 

接受一個數組參數需要具有越來越數組中元素的數目的某種其它方式的功能。