【发布时间】:2025-12-20 21:00:09
【问题描述】:
我在 c: 中遇到了一个程序:
int bags[5]={20,5,20,3,20};
int main()
{
int pos=5,*next();
*next()=pos; //problem with this line(should give error :lvalue required)
printf("%d %d %d",pos,*next(),bags[0]);
return 0;
}
int *next()
{
int i;
for(i=0;i<5;i++)
if(bags[i]==20)
return (bags+i);
printf("error");
exit(0);
}
程序的输出是 5 20 5 虽然我预计它是需要的左值。 谁能说出原因???
【问题讨论】:
-
无法在键盘中编译 (codepad.org/98m9rEjj)。有问题的行确实给出了错误。你用的是什么编译器?
-
@ugoren 从句子的每一侧删除两个
*,这是一个格式问题。 -
此代码不是合法的 C 代码。第 4 行和第 5 行似乎有语法错误。
-
@ssteinberg - 第 4 行是有效的函数声明,第 5 行 - 请参阅我之前的评论。
-
这段代码没问题。 *(int 指针) = 5; //正常语法
标签: c