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=readCounti=*readCount

(uint8_t *)に割り当てることはできませんuint8_t

詳細については、以下のリンク を参照してください。 C での参照による受け渡し

于 2012-10-25T13:16:59.560 に答える