如果我有这样的结构:
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中。
得到它 - 使用大括号。感谢。
答案 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);