gpt4 book ai didi

c - 如果我传递一个变量的地址,我必须返回吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:36 27 4
gpt4 key购买 nike

如果我有一个根据某些规则递增全局变量的函数,并且我通过引用传递一个变量,我是否必须执行返回或者变量是否会被更新?这也适用于局部变量吗?例如:

static uint8_t counter = 1;

void add(uint8_t *variable)
{
if (*variable == 5)
{
*variable = 7;

} else if (*variable == 20)
{
*variable = 1;
} else
{
*variable++;
}
}

然后我在某处调用“添加”函数:

void function(void)
{
... some code...
add(&counter);
... some code...
}

最佳答案

这段代码适用于任何类型的变量,无论它是全局变量还是局部变量,因为对象是通过引用传递的。

然而,更好的接口(interface)是函数返回它作为参数获取的指针。

uint8_t * add(uint8_t *variable)
{
if (*variable == 5)
{
*variable = 7;

} else if (*variable == 20)
{
*variable = 1;
} else
{
*variable++;
}

return variable;
}

在这种情况下,您可以组合函数调用或将其与等待同一指针的其他函数一起使用。例如

add( add( &counter ) );

SomeOtherFunction( add( &counter ) );

在多线程环境下调用函数时存在差异,全局变量没有存储类说明符_Thread_local。

关于c - 如果我传递一个变量的地址,我必须返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40606985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com