This question already has answers here:
How do we use structs?
(2个答案)
5年前关闭。
提出一个新问题,导致我的旧问题在花了很长时间进行编辑后才去世。
因此,我试图摆脱这段代码中的所有这些参数(是的,某些参数是多余的,但我只是以防万一)添加了它们:
工作完美,但参数太多!如果我尝试使用结构...
}
我希望它打印出来:40。
不过不行,请帮忙吗?
我得到的错误是:“在非联合结构中请求成员'x1'。
对于所有x和y坐标。
如果不这样做,则参数默认为键入
(2个答案)
5年前关闭。
提出一个新问题,导致我的旧问题在花了很长时间进行编辑后才去世。
因此,我试图摆脱这段代码中的所有这些参数(是的,某些参数是多余的,但我只是以防万一)添加了它们:
#include <stdio.h>
int main()
{
//Top coord. of the square
int top_x1 = 0;
int top_y1 = 10;
int top_x2 = 10;
int top_y2 = 10;
//Bottom coord. of the square
int bottom_x1 = 0;
int bottom_y1 = 0;
int bottom_x2 = 10;
int bottom_y2 = 0;
//Left coord. of the square
int left_x1 = 0;
int left_y1 = 0;
int left_x2 = 0;
int left_y2 = 10;
//Right coord. of the square
int right_x1 = 10;
int right_y1 = 0;
int right_x2 = 10;
int right_y2 = 10;
parameter(top_x1, top_y1, top_x2, top_y2, bottom_x1,
bottom_y1, bottom_x2, bottom_y2, left_x1,
left_y1, left_x2, left_y2, right_x1, right_y1,
right_x2, right_y2);
}
parameter (int top_x1,int top_y1,int top_x2,int top_y2,int bottom_x1,
int bottom_y1,int bottom_x2,int bottom_y2,int left_x1,
int left_y1,int left_x2,int left_y2,int right_x1,int right_y1,
int right_x2,int right_y2)
{
int totalParameter, topSide, bottomSide, leftSide, rightSide;
topSide = (top_x2 - top_x1);
bottomSide = (bottom_x2 - bottom_x1);
leftSide = (left_y2 - left_y1);
rightSide = (right_y2 - right_y1);
totalParameter = (topSide + bottomSide + leftSide + rightSide);
printf("%d\n", totalParameter);
}
工作完美,但参数太多!如果我尝试使用结构...
#include <stdio.h>>
struct coordinates
{
int x1, y1, x2, y2;
};
int main()
{
struct coordinates top;
struct coordinates bottom;
struct coordinates left;
struct coordinates right;
//Top line of the square
top.x1 = 0;
top.y1 = 10;
top.x2 = 10;
top.y2 = 10;
//Bottom line of the square
bottom.x1 = 0;
bottom.y1 = 0;
bottom.x2 = 10;
bottom.y2 = 0;
//Left line of the square
left.x1 = 0;
left.y1 = 0;
left.x2 = 0;
left.y2 = 10;
//Right line of the square
right.x1 = 10;
right.y1 = 0;
right.x2 = 10;
right.y2 = 10;
parameter(top,bottom,left,right);
}
parameter(top, bottom, left, right)
{
int totalParameter, topSide, bottomSide, leftSide, rightSide;
topSide = (top.x2 - top.x1);
bottomSide = (bottom.x2 - bottom.x1);
leftSide = (left.y2 - left.y1);
rightSide = (right.y2 - right.y1);
totalParameter = topSide + bottomSide + leftSide + rightSide;
printf("%d\n", totalParameter);
}
我希望它打印出来:40。
不过不行,请帮忙吗?
我得到的错误是:“在非联合结构中请求成员'x1'。
对于所有x和y坐标。
最佳答案
该函数需要定义其返回类型和定义其参数的类型,如下所示:
void parameter(struct coordinates top, struct coordinates bottom, struct coordinates left, struct coordinates right)
如果不这样做,则参数默认为键入
int
(这比C语言更重要的是C中的历史课程)。如果您也没有预先声明函数,那么它就是implicitly declared(在现代C语言中是非法的),并假设您的参数和函数类型与应有的不同(它们均默认为int
类型)。