c语言函数可以一次return 两个值嘛?
时间: 2024-10-19 18:13:38 浏览: 26
用C语言写一个函数,将两个字符串连接
C语言标准本身并不支持函数直接返回两个值。C语言设计时倾向于返回单个值,如果你需要同时获取多个返回值,通常通过以下几种方式间接实现:
1. **结构体**:创建一个包含你需要所有数据的自定义结构体,然后将这个结构体作为函数的结果返回。
```c
typedef struct {
int value1;
int value2;
} ResultPair;
ResultPair getValues() {
// ... 在这里计算并填充value1和value2
return (ResultPair) {value1, value2};
}
```
2. **联合体**(union):如果返回的数据类型是相同的,可以使用联合体。但是需要注意的是,每次只能访问联合体中的一个成员,因为它们共享内存空间。
```c
union Values {
int value1;
int value2;
};
union Values getValues() {
union Values result;
// ... 计算后,赋值给result的某个成员
return result;
}
```
3. **指针**:使用指针传递地址,让接收者自行解引用获得结果。
```c
int* getValues() {
int values[2] = {...}; // 计算后的值
return values;
}
// 调用后:
int value1, value2;
(*getValues())(), (*getValues())[1] = value1, value2 = *getValues();
```
阅读全文