C通过引用传递变量

dar*_*e2k 2 c pass-by-reference

我有以下代码:

main()
{
 uint8_t readCount;
 readCount=0;
 countinfunc(&readCount);
}

countinfunc(uint8_t *readCount)
{
 uint8_t i;
 i = readCount;
 ....
}
Run Code Online (Sandbox Code Playgroud)

问题是,当它进入函数时,变量i在赋值后具有不同的值,然后是0.

Som*_*ude 9

这是因为countinfunc变量是一个指针.您必须使用指针取消引用运算符在函数中访问它:

i = *readCount;
Run Code Online (Sandbox Code Playgroud)

将变量作为对函数的引用传递的唯一原因是,如果它是某些大数据,复制可能很昂贵,或者当您想在函数内部设置它的值时,它会在离开函数时保留该值.

如果要设置该值,请再次使用解除引用运算符:

*readCount = someValue;
Run Code Online (Sandbox Code Playgroud)