我有以下代码:

#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);

上面的原型是一样的!

10-04 21:58