C - 我的复制数组功能不起作用。我不明白为什么



这段代码必须通过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;
}

第一个定义的数组成员都是0。

for (int i = 0; i < size; i++)
func_array_1[i] = func_array_2[i];      

从零初始化的数组复制到实际想要复制的数组。因此只需将循环主体改为:

func_array_2[i] = func_array_1[i];
使用<<p> strong> const 和/或更有目的的命名可以防止你的错误。

函数中有一个错别字

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来声明。

可以使用标头<string.h>中声明的标准函数memcpy代替for循环,例如

memcpy( func_array_2, func_array_1, size * sizeof( int ) );

注意,需要检查变量size的输入值不大于10

相关内容

  • 没有找到相关文章

最新更新