为什么在下面的函数中递增数组“ a”不是错误?

苏比希什
#include<stdio.h>
void printd(char []);
int main(void){
       char a[100];
       a[0]='a';a[1]='b';a[2]='c';a[4]='d';
       printd(a);
       return 0;
}
void printd(char a[]){
        a++;
        printf("%c",*a);
        a++;
        printf("%c",*a);
}

说明:我期望它将导致左值错误。但是它正在工作,没有任何错误,并提供了bc作为输出。为什么此递增数组“ a”不是错误?

ALK

如果将数组传递给函数,它将衰减为指向数组第一个元素的指针。

由于这个原因printd(),指针a可以递增和递减,以指向a中定义的数组的不同元素main()

请注意,在声明/定义任何类型T函数的参数列表时,表达式T[]等同于T*

有问题的具体情况

void printd(char a[]);

是相同的

void printd(char * a);

下面的代码显示与OP的代码等效的行为,pa行为类似aside printd()

#include <stdio.h>

int main(void)
{
   char a[100];
   a[0]='a';a[1]='b';a[2]='c';a[4]='d';

   {
     char * pa = a;

     pa++;
     printf("%c", *pa);
     pa++;
     printf("%c", *pa);
   }

   return 0;
`}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我没有收到任何错误在下面的代码?

为什么在下面的代码中printf()打印0而不是10?

为什么下面的函数执行`greet({name ='Rauno'} = {})`而不是`greet(name ='Rauno')`?

$不是函数-jQuery错误

在下面的示例中,使用Abstract Factory而不是factory方法的真正好处是什么?

$(...)。on不是函数-jQuery错误

错误:_。get不是函数

错误myFunction(...)。then不是函数

错误:.map()不是函数

为什么链接器在下面的代码中没有发出错误?

错误execCommand不是函数

在下面的示例代码中,如何将函数输出显示为列表[a],而不是字符串,显示[a]

Javascript:“不是函数”错误

为什么我在下面的函数中得到unboundLocalError?

错误1006:不是函数

为什么下面的代码打印出10而不是null?

为什么指针以半字节而不是数组中的字节递增?

为什么下面的查询不是“单个组”功能?

Javascript“不是函数”错误

为什么下面的代码除非数组为Integer []而不是int []否则将无法工作

在下面的pl sql程序中,有什么错误?它是编译错误吗?

错误:$(...)。dialog不是函数

为什么在下面的查询中出现不是按表达式分组的语法错误?

我不明白为什么我在下面的代码中出现语法错误。谁能帮我?

为什么会出现“不是函数”错误?

为什么我在下面的代码中收到此错误“方法 getHeader(String) 未定义为类型 HttpRequest”?

Postgresql:“ViewShifts”处或附近的语法错误为什么我在下面的查询中出现此错误?

在下面的 c 代码中,错误:avg[i]=sum[i]/5 的第 19 行的“下标值不是数组、指针或向量”

为什么 Angular 在下面的简单代码中生成 3 而不是 1?