【问题标题】:How to return and have a passby reference in the same function in C如何在 C 中的同一函数中返回并通过引用传递
【发布时间】:2022-12-06 02:01:19
【问题描述】:

我希望优化以下功能。我有两个用例

  1. 我使用写入的值打印到输出控制台
  2. 我必须填充一个将通过 CAN 发送的缓冲区

    我如何有效地将这些功能合并到 1

        static float runningrate ;
        void get_rate_CAN(uint16_t* rate) {
            *rate = (uint16_t)truncf(runningrate);
            }
        
        
        uint16_t Getrate(void)
            {
            return (uint16_t)truncf(runningrate);                 
            }
        
    

【问题讨论】:

  • 为什么你需要/从两者中受益?任何一个都可以用来模拟另一个;您可以将对get_rate_CAN(&someui16); 的调用更改为someui16 = Getrate();,反之亦然。

标签: c return-value pass-by-reference


【解决方案1】:

您可以将第一个示例用于两者:

static float runningrate ; //you may want to assign a value here?
void get_rate(uint16_t* rate) {
    *rate = (uint16_t)truncf(runningrate);
}

例子:

uint16_t *buf = ...;
get_rate(buf);


// equivalent to `uint16_t output = Getrate();` from your original answer:
uint16_t output;
get_rate(&output);
printf("%u", output);

& 运算符获取指定值的地址,以便它可以用作引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2016-01-23
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多