阅读“C编程语言手册”中关于结构的章节后,我尝试了下面的代码。目标是让一个指针数组初始化为其所有点的某个特定值。获取函数返回参数的地址C
#include <stdio.h>
#define MAXPOINTS 1000
struct point {
int x;
int y;
};
struct point makepoint(int x, int y);
int main(int argc, const char *argv[])
{
int i;
int number1 = 5, number2 = 10;
struct point *points[1000];
for (i=0; i< MAXPOINTS; i++) {
points[i] = &(makepoint(number1, number2));
}
}
struct point makepoint(int x, int y) {
struct point my_point;
my_point.x = x;
my_point.y = y;
return my_point;
}
运行上面的代码后,所产生的错误是:
test_something.c:18:22: error: cannot take the address of an rvalue of type 'struct point'
为什么会发生这种情况,因为makepoint功能并返回一个有效点的对象?
由于提前,
请注意,即使这是合法的,它也会导致UB,因为从函数返回的值在当前语句后不再存在 – 2014-11-01 01:01:43