我认为输出应该是10 10,但是它是10 1,为什么是idk。
我尝试分配arr [0] = 55,这使我成为55个idk,原因之一。很高兴有一个解释
void foo(int arr[])
{
int i=10;
arr=&i;
printf("%d",arr[0]);
}
int main()
{
int a[4]={1,2,3,4};
foo(a);
printf("%d",a[0]);
return 0;
}
我的想法:1010 实际o / p = 101
答案 0 :(得分:4)
使用arr[0]=10
,您可以将本地指针更改为数组,并使其指向其他位置。但是您不会更改原始数组的内容。
编写1010
,它应该给您{{1}}输出。
答案 1 :(得分:0)
基本上是斯蒂芬所说的。 您修改了arr [0]的地址以指向i的地址。当foo完成执行时,它删除了arr的副本。当您将原始数组传递给参数中的函数时,它已被复制(c是按值传递语言)