将数组作为参数传递给C中的函数我编写了一个包含数组作为参数的函数,并通过传递数组的值来调用它,如下所示。void arraytest(int a[]){
// changed the array a
a[0]=a[0]+a[1];
a[1]=a[0]-a[1];
a[0]=a[0]-a[1];}void main(){
int arr[]={1,2};
printf("%d \t %d",arr[0],arr[1]);
arraytest(arr);
printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);}我发现虽然我在打电话arraytest()函数通过传递值来实现,该函数的原始副本是int arr[]都变了。你能解释一下为什么吗?
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
void arraytest(int a[])
void arraytest(int *a)
森林海
TA贡献2011条经验 获得超2个赞
sizeof a
与 sizeof (&a[0])
.&a
与 &(&a[0])
(与 &a[0]
).char b[] = "foo"
与 char b[] = &("foo")
.
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
int func(int arr[], ...){ . . .}int func(int arr[SIZE], ...){ . . .}int func(int* arr, ...){ . . .}
因此,您正在修改原始值。
- 3 回答
- 0 关注
- 1096 浏览
添加回答
举报
0/150
提交
取消