首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关"Lvalue required in function main"的疑问解决办法

2012-02-29 
有关Lvalue required in function main的疑问程序1:main(int argc, char *argv[]){FILE *frfr fopen(

有关"Lvalue required in function main"的疑问
程序1:
main(int argc, char *argv[]){
FILE *fr;
fr = fopen(*++argv, "r");
}


程序2:
main(){
  char *argv[] = {"hello", "world!"};
  printf("%s\n", *++argv);
}

问题:程序1中 *++argv 可以正常使用,但是程序2中 *++argv 编译时候报错 “Lvalue required in function main”,请问这是为什么?

新手刚进门,各位大侠多指点!谢了先~

[解决办法]
char *argv[] = {"hello", "world!"}; 

argv看起来是个局部变量,但由于对它进行了初始化,实际上相当于是指向某内存的一个常量指针,++argv就意味着移动这个指针,所以错误,如果:

main(){ 
char *argv[] = {"hello", "world!"}; 
char **p = argv;
printf("%s\n", *++p); 

就不会出现错误了。
[解决办法]
注意一个是函数参数,一个是局部变量。

arg 形式看起来是一个数组,
对于数组,是无法 ++ 操作的,
所以 第二个是有问题的。

数组名作为参数传递的时候,
数组名会退化为指针,指针是可以 ++的,
所以,第一个没有问题

热点排行