如何在函数中给已经在主函数中定义好的数组赋值
问题描述:
已经在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);
}