は、私は次のコードをしている:私は使用して機能Cの引数の値は不変ですか?
void func(uint8 *var) {
uint8 tempvar;
if (var)
var = &tempvar;
*var = 0;
}
を呼び出します。コードはラインでセグメンテーションフォールトを与える
func(NULL);
を "* VAR = 0;"なぜなら、varはメモリアドレス0x0を指しているからです。一時変数への代入がうまくいかなかった理由は分かりません。
"なぜ私の一時変数への割り当てが機能しませんでしたか"。なぜなら、 'var'がもともとはnullだった場合、その割り当てをスキップするようにプログラムに明示的に依頼したからです。あなたの 'if'条件はそれを正確に示しています。 – AnT
@πάνταῥεῖ - それはスコープ内のローカル変数です。スコープ内でのみ使用しています。パラメータは単一のポインタであり、アドレスの変更は呼び出し元変数を変更しません。したがって、その範囲外でアクセスされる変数はありません。 –
既に持っています... –