我的复制数组功能不起作用。我不明白为什么
my copy array function didn't work. i didn't understand why
此代码必须通过 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;
}
它给出了第一个定义的全为零的数组成员。
函数中有错字
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);
即在函数内不被更改的数组应使用限定符 const
.
声明
您可以使用 header <string.h>
中声明的标准函数 memcpy
而不是 for 循环,例如
memcpy( func_array_2, func_array_1, size * sizeof( int ) );
注意需要检查变量size
输入的值是否大于10
.
for (int i = 0; i < size; i++)
func_array_1[i] = func_array_2[i];
您正在从 zero-initialized 数组复制到您实际要复制到的数组。
所以只需将循环体更改为:
func_array_2[i] = func_array_1[i];
使用 const 和/或更有目的性的命名可以避免您的错误。
此代码必须通过 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;
}
它给出了第一个定义的全为零的数组成员。
函数中有错字
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);
即在函数内不被更改的数组应使用限定符 const
.
您可以使用 header <string.h>
中声明的标准函数 memcpy
而不是 for 循环,例如
memcpy( func_array_2, func_array_1, size * sizeof( int ) );
注意需要检查变量size
输入的值是否大于10
.
for (int i = 0; i < size; i++) func_array_1[i] = func_array_2[i];
您正在从 zero-initialized 数组复制到您实际要复制到的数组。 所以只需将循环体更改为:
func_array_2[i] = func_array_1[i];
使用 const 和/或更有目的性的命名可以避免您的错误。