Closed3
オーバーフローの処理
型変換ではなるべく値を維持するが、オーバーフローとなった場合はビットパターンを維持する。
以下の代入ができない理由
int *p;
*p = 123;
pはポインタ変数のメモリを確保するが、まだ値が入っていないためアドレスも確保できていない。
あくまでpは値が入っているアドレスを参照することしかできない。
これを解決するには、mallocなどでアドレス領域を確保してから、関節演算で値を代入する。
関数に初期化していないポインタ変数を代入してはいけない。
以下のような実装をしてはいけない。
void set_time(time *t);
main()
{
time *t;
set_time(t);
}
これは先の理由と同じでポインタ変数の初期化は、メモリアドレスを持たないため、引数を使う関数内でセグフォが発生する
このスクラップは2021/08/20にクローズされました