我在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]
对我没有意义!
答案 0 :(得分:0)
参数 arr 接收参数的地址,因为它是一个数组,而不是副本,因此您可以修改 arr < / em>(在 main 中)(在 test 和 main :-中不使用相同的名称更为实用))
void test(char arr [])和 void test(int * arr)是写同一件事的两种方法
调用 test(arr)和 test(&arr [0])也是写同一件事的两种方法