私は次のコードを持っています:
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;
あなたは大丈夫です。
交換するだけ
i=readCount
に
i=*readCount
(uint8_t *)
に割り当てることはできませんuint8_t
詳細については、以下のリンク を参照してください。 C での参照による受け渡し