VIPPERでもわかる C言語プログラミング
■ このスレッドは過去ログ倉庫に格納されています
0762デフォルトの名無しさん
2005/11/03(木) 22:44:44C言語 イメージ
char * foo1; ○――→?(参照先は不定、決まっていない)
char * foo2 = NULL; ○――→NULL
char * foo3 = "STRING"; ○――→"STRING"
(6文字+終端文字 [ 'S', 'T', 'R', 'I', 'N', 'G', '\0' ])
char bar1[8]; "????????"(中身は不定、決まっていない)
char bar2[8] = "STRING"; "STRING"
(6文字+終端文字、余り1文字は不定 [ 'S', 'T', 'R', 'I', 'N', 'G', '\0', ? ])
printfとかで表示する分には、foo3とbar2は同じ。
ただし、文字列編集をする場合には余りの部分を使えるbarの書き方のほうが有利。
じゃあなんで編集しづらいfooの書き方を使うことがあるのかというと……
欲しいだけのメモリを動的に割り当てるにはfooの書き方が必要になるから。
char * foo; /* ピッタリの長さの文字列の確保、動的なメモリの取得、などに使う */
char bar[長さ] /* 文字列編集などで一定のメモリを確保する時 */
ってこった。
■ このスレッドは過去ログ倉庫に格納されています