C通过引用传递变量

时间:2012-10-25 13:09:24

标签: c pass-by-reference

我有以下代码:

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

countinfunc(uint8_t *readCount)
{
 uint8_t i;
 i = readCount;
 ....
}

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

5 个答案:

答案 0 :(得分:9)

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

i = *readCount;

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

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

*readCount = someValue;

答案 1 :(得分:3)

countinfunc(uint8_t *readCount)
{
 uint8_t i;
 i = *readCount;
 ....
}

答案 2 :(得分:3)

替换

i = readCount;

i = *readCount;

答案 3 :(得分:2)

您将i设置为readCount地址。将作业更改为:

i = *readCount;

你会没事的。

答案 4 :(得分:1)

只需替换

i=readCount  通过 i=*readCount

您无法将(uint8_t *)分配给uint8_t

有关详细信息,请点击以下链接 Passing by reference in C