gpt4 book ai didi

c - 当我们将数组传递给函数时,复制是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 16:23:10 24 4
gpt4 key购买 nike

我在 K&R C 书中读到,当我们将数组传递给函数时,数组的地址(包含数组第一个元素的地址的指针)被传递给函数,因此看起来像引用传递(尽管 C 中没有这样的真实机制)

但是,下面的内容对我来说没有意义 -

void test(char arr[10]) {
arr[2] = 'a';
}

main() {
char arr[5] = "hello";
test(arr);
printf("%s", arr);
return 0;
}

这给了我预期的治疗效果。

但这是否意味着这就是评估的方式?

“char arr[]”参数被分配了指向实际数组的指针?这是如何运作的?

char arr[10] = &arr[0] 

对我来说没有意义!

最佳答案

test中,参数arr接收参数的地址,因为它是一个数组,而不是副本,因此您修改arr<的值/em> 在 main 中(在 testmain 中不使用相同的名称更实际:-) )

void test(char arr[])void test(int * arr) 是编写相同内容的两种方法

调用test(arr)test(&arr[0])也是编写同一事物的两种方法

关于c - 当我们将数组传递给函数时,复制是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54098883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com