2

我有以下代码:

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

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

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

4

5 回答 5

9

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

i = *readCount;

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

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

*readCount = someValue;
于 2012-10-25T13:11:25.530 回答
3
countinfunc(uint8_t *readCount)
{
 uint8_t i;
 i = *readCount;
 ....
}
于 2012-10-25T13:10:57.097 回答
3

代替

i = readCount;

i = *readCount;
于 2012-10-25T13:10:58.603 回答
2

您正在设置i为. 将分配更改为:readCount

i = *readCount;

你会没事的。

于 2012-10-25T13:11:39.490 回答
1

只需更换

i=readCount 经过 i=*readCount

您不能分配(uint8_t *)uint8_t

有关这方面的更多信息,请参阅下面的链接 在 C 中通过引用传递

于 2012-10-25T13:16:59.560 回答