问题遇到的现象和发生背景 用结构变量做函数参数出错。电脑用的国产机,操作系统是银河麒麟,应该是基于ubuntu做的吧。gcc版本信息是gcc (Ubuntu/Linaro 5.4.0-6kord1~16.04.12) 5.4.0 20160609
问题相关代码,请勿粘贴截图
struct Point2d
{ float x;
float y;
}Point2d;
Point2d * middlepoint(Point2d * P1,Point2d * P2);
Point2d * middlepoint(Point2d * P1,Point2d * P2)
{ Point2d * p;
p->x = (p1->x + p2->x)/2;
p->y = (p1->y + p2->y)/2;
return p;
}
运行结果及报错内容 这几行简单语句,在codeblock里无论用c还是c++编译都出错,用c编译出错信息是error: unknown type name ‘Point2d’而用cc++编译出错信息是error: ‘p1’ was not declared in this scope
我的解答思路和尝试过的方法 我没有思路和办法,因为我本来只在二十多年前学了一点皮毛,长时间没有用(一直用的是free pascal/lazarus)现在准备重新捡起来。
我想要达到的结果 下午能知道出错的原因和解决办法
Point2d * p你只定义了指针,没有分配空间,直接p->x会崩溃的
改为
Point2d * p = new Point2d;
笔误“下午能知道出错的原因“应该是“希望能知道出错的原因”