Closed3

オーバーフローの処理

bayamasabayamasa

以下の代入ができない理由

int *p;

*p = 123;

pはポインタ変数のメモリを確保するが、まだ値が入っていないためアドレスも確保できていない。
あくまで
pは値が入っているアドレスを参照することしかできない。
これを解決するには、mallocなどでアドレス領域を確保してから、関節演算で値を代入する。

bayamasabayamasa

関数に初期化していないポインタ変数を代入してはいけない。
以下のような実装をしてはいけない。

void set_time(time *t);
main()
{
  time *t;
  set_time(t);
}

これは先の理由と同じでポインタ変数の初期化は、メモリアドレスを持たないため、引数を使う関数内でセグフォが発生する

このスクラップは2021/08/20にクローズされました