我们如何使用结构?

我遇到的主要问题是有这么多参数,我只是想摆脱它,是的,我不理解结构的逻辑。 然而,它变得更加清晰……

编辑所以cHao希望我使用一个特定的案例,所以这里是我做的一个例子:

#include  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 > struct coordinates { int x1, y1, x2, y2; }; int main() { struct coordinates top; struct coordinates bottom; struct coordinates left; struct coordinated 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) { 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); 

}

虽然不起作用,有什么帮助吗? :P我得到的错误是:“请求成员’x1’的东西不是联合结构。对于所有的x和y坐标。

 typedef struct _foo { int x1, x2, x3,..., x20; } foo; int add(const foo *pBar) { return pBar->x1 + pBar->x2 + pBar->x3 + ... + pBar->x20; } int main() { // declare and initialize the struct foo bar = { 1, 2, 3, ..., 20 }; // an alternative way of initializing the struct: bar.x1 = 1; bar.x2 = 2; bar.x3 = 3; : bar.x20 = 20; int total = add(&bar); } 

指结构的一般使用,而不是技术方面:(因为在我看来,你不理解其中的逻辑)

你应该将struct用于他们属于一件事的变量组。

例如,struct point(表示空间中的point)将包含int for X和int for Y.

你应该使用数组作为变量组,它们之间的关系是串行的。

例如:课堂上的学生,因为你想按顺序对每个学生做同样的动作。