c - 对数组指针自增的疑问

标签 c pointers

这里我得到了输出“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/

相关文章:

c - 给定一个二维数组——我想使用原始数组中的值创建一个新数组

C++ extern const char* 没有按预期工作

c - 如何在 c 中打印结构成员的值(使用指向结构的指针)

c++ - 有没有办法将 child *返回到基地*并评估哪个 child *已返回?

c - 从函数返回 FILE 指针并在 main 上处理它

c - 查找整数分区的字典顺序

javascript - 将数据从网页传输到服务器c程序

c - 从生成过程中排除 child

c - 使用 srand 和 rand,经过几次迭代后我得到相同的数字

c - 如何禁用可能的堆栈破坏保护(未覆盖EIP,而是EBP)