此代碼必須通過 void copy 函式將一個陣列復制到另一個陣列。但我不明白為什么它不起作用。
#include <stdio.h>
void copy(int func_array_1[], int func_array_2[], int size) {
for (int i = 0; i < size; i )
func_array_1[i] = func_array_2[i];
}
int main() {
int size = 0;
int array[10] = { 0 };
int copy_array[10] = { 0 };
printf("Input the number of elements to be stored in the array :");
scanf("%d", &size);
for (int i = 0; i < size; i )
scanf("%d", &array[i]);
copy(array, copy_array, size);
for (int i = 0; i < size; i )
printf("%d", copy_array[i]);
return 0;
}
它給出了第一個定義的陣列成員,這些成員都為零。
uj5u.com熱心網友回復:
for (int i = 0; i < size; i ) func_array_1[i] = func_array_2[i];
您正在從零初始化陣列復制到您實際想要復制到的陣列。所以只需將回圈體更改為:
func_array_2[i] = func_array_1[i];
使用const和/或更有目的性的命名可以防止您的錯誤。
uj5u.com熱心網友回復:
您在函式中有錯字
for (int i = 0; i < size; i )
func_array_1[i] = func_array_2[i];
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
由于該函式被稱為
copy(array, copy_array, size);
你必須寫
for (int i = 0; i < size; i )
func_array_2[i] = func_array_1[i];
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
錯字的原因是錯誤的函式宣告。該函式應至少宣告為
void copy( const int func_array_1[], int func_array_2[], int size);
也就是說,在函式中未更改的陣列應使用 qualifier 宣告const。
例如,您可以使用標頭中memcpy宣告的標準函式來代替 for 回圈<string.h>
memcpy( func_array_2, func_array_1, size * sizeof( int ) );
請注意,您需要檢查變數的輸入值size是否不大于10。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/478312.html
上一篇:串列元素在for回圈R中被覆寫?
