回答編集履歴

1

追記のため

2018/12/25 10:24

投稿

myoon
myoon

スコア100

test CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  ナルポインタにアクセスした場合、C言語では何が起こるかわかりません。
4
4
 
5
- たまたま、質問者様のコンパイラでは、printf の %s に対応する文字列(文字へのポインタ)がナルポインタの場合 (null) と表示し、%p では (nil) と表示する親切設計だったのでしょう。これは別にそう決められてるわけではないです。
5
+ たまたま、質問者様のコンパイラでは、printf の %s に対応する文字列(文字へのポインタ)がナルポインタの場合 (null) と表示し、%p では (nil) と表示する親切設計だったのでしょう。これは別にC言語仕様で(あるいはprintf関数仕様で)そう決められてるわけではないです。
6
6
 
7
- emploee->name はemploee と同じアドレスになるので、(null) が出たが、何らかの理由で書き換えたら「ヌルポインタにアクセスした」という形になってセグメントフォールトになったのでしょうが、私にはその違いは分かりません。
7
+ emploee->name はemploee と同じアドレスになるので、(null) が出たが、書き換えたら何らかの理由で親切機構が働かずに「ヌルポインタにアクセスした」という形になってセグメントフォールトになったのでしょうが、私にはその違いは分かりません。
8
8
 
9
9
  ヌルポインタにアクセスしたら何が起こるか分からないので、何が起こっても文句は言えないということです。
10
+
11
+ ちなみに printf("%s",str) で、strが長さ0の文字列""の場合(strはナルポインタではないことに注意)は動作が決まってます。