谁能说为什么传递给函数时数组没有改变

标签 c gcc

我认为输出应该是 10 10,但它是 10 1,我不知道为什么。

我尝试分配 arr[0]=55,结果我变成了 55,我也不知道为什么。很高兴得到解释

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

最佳答案

使用arr=&i,你改变数组的局部指针,让它指向别的地方;但您不会更改原始数组的内容。

arr[0]=10,它应该给你 1010 输出。

关于谁能说为什么传递给函数时数组没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56859134/

相关文章:

c - 是否可以从另一个进程中释放泄漏的内存?

c++ - 忽略警告 "-Wunused-result"

gcc - 提供给 ./configure 的 `ac_cv_func_malloc_0_nonnull` 是什么?

C程序在Netbeans中编译,但在cmd中用gcc无法编译

c - extern 与 c 中变量的全局定义

c - 指针如何与 C 中的双向链表一起工作?

c - 无法绕过 gcc 的 -Wconversion

c++ - 适用于 x86 的 OpenSolaris 的良好 C/C++ 编译器

c++ - 访问结构有问题

c - 如何将0x00写入文件