我有以下代码:
main()
{
uint8_t readCount;
readCount=0;
countinfunc(&readCount);
}
countinfunc(uint8_t *readCount)
{
uint8_t i;
i = readCount;
....
}
问题是当它进入函数时,变量i
的值与赋值后的 0 不同。
我有以下代码:
main()
{
uint8_t readCount;
readCount=0;
countinfunc(&readCount);
}
countinfunc(uint8_t *readCount)
{
uint8_t i;
i = readCount;
....
}
问题是当它进入函数时,变量i
的值与赋值后的 0 不同。
这是因为在countinfunc
变量中是一个指针。您必须使用指针取消引用运算符在函数中访问它:
i = *readCount;
将变量作为对函数的引用传递的唯一原因是,如果它是一些复制成本可能很高的大数据,或者当您想在函数内部设置它的值时,它会在离开函数时保留该值。
如果要设置该值,请再次使用取消引用运算符:
*readCount = someValue;
countinfunc(uint8_t *readCount)
{
uint8_t i;
i = *readCount;
....
}
代替
i = readCount;
和
i = *readCount;
您正在设置i
为. 将分配更改为:readCount
i = *readCount;
你会没事的。