以下に C プログラムがあり、関数func
には 2 つのfor
ループがあります。最初のfor
ループでは、配列変数をインクリメントする際に「左辺値が必要です」というエラーは発生しませんが、2 番目のループで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
}
}