开发者社区> 问答> 正文

将数组作为参数传递给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[]已更改。

你能解释为什么吗? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 20:23:14 1058 0
2 条回答
写回答
取消 提交回答
  • 因为传递的数组的第一个元素的指针的拷贝,两个指针都指向同一个内存地址

    2020-02-09 10:14:11
    赞同 展开评论 打赏
  • 当传递数组作为参数时,这

    void arraytest(int a[]) 的意思与

    void arraytest(int *a) 所以您要修改main中的值。

    由于历史原因,数组不是一等公民,因此不能按值传递。

    2020-02-10 16:06:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
函数对象 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载