gpt4 book ai didi

有人可以解释错误吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:11 25 4
gpt4 key购买 nike

我下面有一个 C 程序,在函数 func 中有两个 for 循环。在第一个 for 循环中,递增数组变量 a 时没有“需要左值”错误,但在第二个循环中递增数组变量 c for 循环,编译器会给出“需要左值”错误。为什么?

#include<stdio.h>
#include<string.h>
void func(char a[],int n);

int main(int argc,char **argv){

char * s="Happy ,People\n\n";
func(s,strlen(s));

return 0;
}

void func(char a[],int n){
for(int i=0;i<n;i++){
printf("%c",*a++); //This works fine — no lvalue error here
}

char c[]="Happy ,People\n\n";
for(int i=0;i<n;i++){
printf("%c",*c++); // there is error coming here lvalue Required
}
}

最佳答案

在函数中,c是一个数组。数组的名称是一个常量。您不能增加或减少它。

与流行的神话相反,数组和指针之间存在差异。

在函数原型(prototype)中使用 [] 会使事情变得困惑,因为它们确实标识了指针。你会得到相同的结果:

void func(char *a, int n)
{
for (int i = 0; i < n; i++)
printf("%c",*a++);
char c[] = "Happy, People\n\n";
for (int i = 0; i < n; i++)
printf("%c",*c++);
}

关于有人可以解释错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18372257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com