数组指针混用的问题
这个程序要实现字符串转换成数组,
void main()
{
char str[]="-12345";
if (*str=='-'||*str=='+')
{
str++; //此处出现错误error C2105: '++' needs l-value
}
int a=0;
while (*str)
{
a=a*10+(*str-'0');
str++; //此处出现错误error C2105: '++' needs l-value
}
if (*str=='-')
{
a=-a;
}
printf("%d",a);
}
这个为什么跟数组的定义有关系?,把数组定义成指针就会好了,不能混用?
[解决办法]
数组名可以作为指针来使用,当不可以改变它的值.
[解决办法]
数组名是常量,不能改变她的值;而指针式变量,指针的值可以改变
[解决办法]
数组名不是变量, 是个常量地址,是右值。
指针是个变量, 可以初始化指向一段地址, 是左值。
[解决办法]
数组名不是常量!
数组是一个对象,注意是一个!
数组可以转换成指向其首元素的指针,这个转换而来的结果是右值.
所以++操作符使得数组发生这一个转换,但是由于++操作要求操作数是左值,所以被检测出erro/