c - 如何将数组传递给函数而不在函数外部更改它?(数组不是全局的)

标签 c arrays function

这是一个例子:

#include <stdio.h>
#include <stdlib.h>

fun(int porra[])
{  
   porra[0]=-1;
}


int main()
{
  int vec[1];
  vec[0]=0;
  fun(vec);
  printf("%d",vec[0]);
  system("PAUSE");  
  return 0;
}

它应该打印-1而不是0吗? 如果是这样,有没有办法将数组复制到函数而不用数组运行 for ?

最佳答案

C 中没有按值传递数组的 native 方法,因为当它们作为参数传递时,它们会“衰减”到指向其第一个元素的指针。

但是有一个技巧:声明一个包含数组的结构。结构体是按值传递的,包括数组,如果您想到这一点,这很奇怪(当我学习 C 时,这不起作用,因为结构体不能作为函数参数)。毕竟,结构很像数组,只是元素具有不同的类型。

(例如代码,请参阅上面 alk 的答案,他更快。)

关于c - 如何将数组传递给函数而不在函数外部更改它?(数组不是全局的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30005740/

相关文章:

c - PostgreSQL的C语言函数对字符串进行操作

c - 查询一个不熟悉的printf函数语法

c - strcat 两个字符指针时如何修复段错误

c - 如何从函数中取回指针的指针

javascript - jQuery 计算输入的内容

c - 传递指向函数的指针没有按预期工作

c - 2 秒后加速闪烁 LED

java - 如何将excel文件中的第一行(属性名称)与java中的所有单元格值映射?

javascript - 使用jquery选中复选框时如何制作键值对数组?

python - 为什么在递归情况下出现 "Function not Defined"错误?