碰到这样一段代码:
char c[]= "abc";
while(*c)
{
printf("%c",*c);
c++;
}
错误定位到 c++ ; 这一行,提示: '++'需要左值。
而这样写就没问题。
char *c= "abc";
while(*c)
{
printf("%c",*c);
c++;
}
要了解这个问题为什么会发生,先得了解”左值“是个什么??
左值和右值
在c/c++中,每个变量都有与其相关联的2个值。
数据值:又称右值,被存储在某段内存内。
地址值:又称左值,存储数据值的内存块的地址。
那第一段代码为什么会说需要左值(即地址值)呢?
那得先看看 c++(后增量)和++c(前增量)这2段代码的实际意义。
c++:
{
char *b=c;
c=c+1;
return b;
}
++c:
{
c=c+1;
return c;
}