使用 C 语言函数同时返回多个值143


在 C 语言中,函数通常返回一个单个值。但是,有时我们需要返回多个值。可以通过使用指针、结构或宏来实现此目的。

使用指针返回多个值

这是最简单的方法,其中函数的参数是输出参数的指针。函数将这些参数值修改为所需的输出值。
#include
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int x = 5, y = 10;
swap(&x, &y);
printf("x = %d, y = %d", x, y);
return 0;
}

上面代码定义了一个名为 swap() 的函数,它通过交换指向 x 和 y 的指针来交换两个整数的值。请注意,swap() 函数没有显式返回任何值,但它通过修改输出参数 *a 和 *b 来实现其功能。

使用结构返回多个值

我们可以定义一个结构来存储多个值,然后函数返回此结构的实例。例如,我们可以定义一个名为 Point 的结构来表示一个点,其中包含 x 和 y 坐标:
typedef struct Point
{
int x;
int y;
} Point;

然后,我们可以定义一个返回 Point 结构的函数:
Point get_point()
{
Point p;
p.x = 10;
p.y = 20;
return p;
}

现在,我们可以在主函数中调用此函数并访问结构成员:
int main()
{
Point p = get_point();
printf("x = %d, y = %d", p.x, p.y);
return 0;
}

使用宏返回多个值

我们可以使用宏来定义一个返回多个值的函数。宏会将代码替换为预编译器定义的常量或函数调用。例如,我们可以使用以下宏将两个整数的最小值和最大值存储在两个输出参数 min 和 max 中:
#define MIN_MAX(a, b, min, max) \
if ((a) < (b)) { \
(min) = (a); \
(max) = (b); \
} else { \
(min) = (b); \
(max) = (a); \
}

我们可以使用此宏如下:
int main()
{
int a = 5, b = 10, min, max;
MIN_MAX(a, b, min, max);
printf("Min: %d, Max: %d", min, max);
return 0;
}

2024-12-02


上一篇:当符号遇上数字:用 C 语言输出带正负号的数值

下一篇:随机数生成:C 语言程序中的五个随机数