我一直试图通过编写简单的代码来理解指针概念,但遇到了错误问题,似乎无法解决或理解。
#include <stdio.h>
int *foo(void);
int main(void) {
printf("%d\n", *foo());
return 0;
}
int *foo(void) {
static int num = 1;
++num;
return &(++num);
}
这是错误消息。
error: lvalue required as unary ‘&’ operand
return &(++num);
函数 'foo()' 返回一个指向整数的指针,并且main函数应该使用*运算符来打印返回的整数。对于foo()内的静态变量num,我认为通过添加静态限定符,num不再是临时变量,所以可以使用“&”符号对其进行操作。
++num; return&num;
。 - M.M