我有以下代码:
#include <stdio.h>
void changeValue(char str[]) {
str[2] = 'a';
}
int main()
{
char a[]="Hello world";
changeValue(a);
printf("%s", a);
}
我想知道这是怎么回事为什么在传递名为“a”的数组时,它是通过引用传递的?那么,我在changeValue内部所做的更改实际上是从外部看到的?不应该是定义为char*str的函数参数,以便能够更改它吗?
最佳答案
在许多情况下(包括将它们作为函数参数传递),数组被转换为指向其第一个元素的指针。
所以,传递的不是数组。事实上,在原型中使用的语法只是一个视觉糖果
void changeValue(char str[]);
void changeValue(char *str);
上面的原型是一样的!