找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1129|回复: 6
打印 上一主题 下一主题
收起左侧

请问C语言一个函数能返回两个值吗?

[复制链接]
跳转到指定楼层
楼主
ID:1010435 发表于 2023-7-16 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问一个C语言函数,能return两个值吗,比如说我想同时获取温度和湿度。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:526108 发表于 2023-7-16 15:21 | 只看该作者
可以,可以返回结构体和数组
回复

使用道具 举报

板凳
ID:712097 发表于 2023-7-16 16:37 | 只看该作者
qq624353765 发表于 2023-7-16 15:21
可以,可以返回结构体和数组

沙发正解
回复

使用道具 举报

地板
ID:155507 发表于 2023-7-16 17:30 | 只看该作者
在C语言中,函数只能返回一个值。但是你可以通过使用指针或者结构体来实现返回多个值的效果。

1.使用指针:你可以将要返回的多个值通过函数参数中的指针传递给调用者,然后在函数内部对指针进行赋值。调用者在函数返回后,可以通过指针获取这些值。


void getTemperatureAndHumidity(float* temperature, float* humidity) {
    // 在函数内部获取温度和湿度的值
    float temp = 25.0;
    float hum = 60.0;

    // 通过指针参数返回多个值
    *temperature = temp;
    *humidity = hum;
}

int main() {
    float temp, hum;

    // 调用函数获取温度和湿度
    getTemperatureAndHumidity(&temp, &hum);

    // 在调用者中使用获取到的值
    printf("Temperature: %.2f°C\n", temp);
    printf("Humidity: %.2f%%\n", hum);

    return 0;
}

2.使用结构体:你可以定义一个结构体,其中包含要返回的多个值。函数可以返回该结构体类型的对象,调用者在接收返回值后可以直接访问结构体中的成员变量。


typedef struct {
    float temperature;
    float humidity;
} WeatherData;

WeatherData getTemperatureAndHumidity() {
    WeatherData data;

    // 在函数内部获取温度和湿度的值
    float temp = 25.0;
    float hum = 60.0;

    // 将获取到的值赋给结构体的成员变量
    data.temperature = temp;
    data.humidity = hum;

    return data;
}

int main() {
    WeatherData data;

    // 调用函数获取温度和湿度
    data = getTemperatureAndHumidity();

    // 在调用者中使用获取到的值
    printf("Temperature: %.2f°C\n", data.temperature);
    printf("Humidity: %.2f%%\n", data.humidity);

    return 0;
}

通过使用指针或结构体,你可以在C语言中实现函数返回多个值的效果。你可以根据具体需求选择使用哪种方式。
回复

使用道具 举报

5#
ID:213173 发表于 2023-7-16 21:53 | 只看该作者
如果楼主不熟悉楼上推荐的方法还可以把两个数据合并在一起返回。return a<<8|b; ,两个8位合并一个16位,后期再拆开使用。
回复

使用道具 举报

6#
ID:1010435 发表于 2023-7-16 23:23 | 只看该作者
angmall 发表于 2023-7-16 17:30
在C语言中,函数只能返回一个值。但是你可以通过使用指针或者结构体来实现返回多个值的效果。

1.使用指 ...

受教了,我研究研究
回复

使用道具 举报

7#
ID:123289 发表于 2023-7-17 16:06 | 只看该作者
想一下:
对于函数来于,它返回的是N个字节。至于这N个字节,接收程序如何去分配,随意。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表