如何使用结构作为参数调用函数?

时间:2016-04-23 21:22:03

标签: c function struct

如果我有这样的结构:

CollectionViewCell

和这样的函数

struct Point 
{
    double x;
    double y;
};

当我致电double geometricDistance(struct Point point1, struct Point point2) { double xDist = point1.x - point2.x; double yDist = point1.y - point2.y; return sqrt((xDist * xDist) + (yDist * yDist)); } 时,我不能只做geometricDistance或类似的事情,因为那只是两个整数。我怎么称呼它?

感谢。

噢,顺便说一下,它在C中。

得到它 - 使用大括号。感谢。

3 个答案:

答案 0 :(得分:3)

所以你有你的结构。

在主要部分,你可以宣布一个观点。

struct Point point1;
struct Point point2;

现在你创建了一个名为point的结构变量,它可以访问结构中的两个值double x和double y。

point1.x = 12;
point1.y = 15;

point2.x = 5;
point2.y = 6;

要将它传递给您传入指向结构的指针的函数,它允许您编辑该点的值。     //函数调用     double value = geometricDistance(&point1, &point2);

double geometricDistance(struct Point* point1, struct Point* point2)
{
  double xDist = point1->x - point2->x;
  double yDist = point1->y - point2->y;
 return sqrt((xDist * xDist) + (yDist * yDist));
}

编辑:我意识到你实际上并不需要传入指向结构的指针。您可以简单地创建函数参数double geometricDistance(struct Point point1, struct Point point2),因为您不会更改您声明的任何结构变量的值。 您的函数调用只能是double value = geometricDistance(point1, point2);函数内部而不是使用->引用,您可以使用.point1.x之类的point1.y引用

答案 1 :(得分:1)

你必须传递一个类型为struc Point的变量。

例如:

struct Point A;
struct Point B;
//add values in the fields x and y if you need to
.
.
.
double something = geometricDistance(A, B);

答案 2 :(得分:0)

您还应该了解其他两个类别,也称为"参数"。它们被称为"参数"因为它们定义了传递给函数的信息。

Actual parameters are parameters as they appear in function calls.
Formal parameters are parameters as they appear in function declarations.

函数geometricDistance的定义/原型显示它需要两个类型struct Point的参数。您只需要使用geometricDistance类型的两个参数调用struct point函数。

例如,

struct point a,b;
.
.
double result = geometricDistance(a,b);