如何在函数中给已经在主函数中定义好的数组赋值

如何在函数中给已经在主函数中定义好的数组赋值

问题描述:

已经在main()中定义了一个长度为20的数组,想在定义的函数中给数组赋值,但一直报错,请问如何修改?

 void arrin(int *arr)
{
    int i;
    arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
    for(i=0;i<20;i++)
        printf("%d",arr[i]);
}
main()
{
    int testarr[20];
    ............
}

arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
这种赋值方式只在数组定义的时候才可以使用。

这种做法只能在定义这个数组的时候使用, 赋值是不能这样用的哦,如果你就喜欢这种赋值的方式,那就定义一个一样的,然后memcpy过去。

把数组首地址传进去就好了,调用方式如下

 arrin(testarr);

arr[]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
这种给数组元素赋值时错误的,只能定义时这样使用。修改如下:

 #include <stdio.h>
void arrin(int *arr)
{
    int i;
    for(i=0;i<20;i++)
        printf("%d",arr[i]);
}
void main()
{
    int testarr[20]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0};
    arrin(testarr);
}

或者这样:

 #include <string.h>
#include <stdio.h>
void arrin(int *arr)
{
    int i;
    int temp[20]={1,1,2,2,3,3,4,5,6,5,6,7,7,8,8,9,9,0,0,9};
    memcpy(arr,temp,20*sizeof(int));
    for(i=0;i<20;i++)
        printf("%d",arr[i]);
}
void main()
{
    int testarr[20];
    arrin(testarr);
}