c - 如何调用以结构体作为参数的函数?

标签 c function struct

如果我有这样的结构:

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时,我不能只做 geometricDistance(5,6);或类似的东西,因为那只是两个整数。我该如何调用它?

谢谢。

哦,顺便说一句,它是用 C 语言编写的。

明白了 - 使用大括号。谢谢。

最佳答案

所以你有了你的结构。

在 main 中你可以声明一个点。

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.xpoint1.y

关于c - 如何调用以结构体作为参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36816594/

相关文章:

c - 在适当的位置添加一个节点(列表将按升序排列)

c - 执行代码 C 后检索全局变量内容的历史记录

c - 用于字符串连接的 OpenCL 内核

c - 为什么 iconv 命令输出到同一个文件被截断?

javascript - 将用户 HTML 输入作为 javascript 函数参数传递

c - C 中的重复消除

c - 如何将字符串加载到结构中?

无法理解这个无限循环

javascript - 计算页面上的 javascript 函数数量(使用 javascript)

JavaScript 闭包问题