这里我得到了输出“bcde”,但由于“a”是一个常量数组指针,它不应该在 fun()
内递增,对吧?那为什么这里允许呢?
void fun(char a[])
{
a++;
printf("%s",a);
}
void main()
{
char a[]="abcde";
fun(a);
}
最佳答案
当您将数组传递给 C 中的函数时,数组将“衰减”为指针。换句话说,可以这样声明等效函数:
void fun(char *a)
现在函数内的代码完全有意义:指针递增,因此当结果传递给 printf
时,将从第二个字母开始打印原始字符串。
关于c - 对数组指针自增的疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809776/