C言語に手を出したばかりの初心者です。
あるサイトで下のような方法で文字列を記憶させていました。
char *fname = "test.txt";
この方法でなぜ記憶できるのか教えてください。
(ポインタの概念が少し苦手で十分に分かってないところもあります。)
ちなみに、自分は配列変数を使って記憶させてきました。
文字列の格納
-
赤鬼
Re: 文字列の格納
最初は誰でもえ?って思いますよね。Jimmy さんが書きました:C言語に手を出したばかりの初心者です。
あるサイトで下のような方法で文字列を記憶させていました。
char *fname = "test.txt";
この方法でなぜ記憶できるのか教えてください。
(ポインタの概念が少し苦手で十分に分かってないところもあります。)
ちなみに、自分は配列変数を使って記憶させてきました。
まず最初に
"test.txt"という文字の配列がメモリのどこかに確保されます。
(関数かグローバルかによって少し違ってきますが深く説明すると長くなります、説明してほしければしますが)
そして、*fnameにその先頭のポインタが入ります。
状態的に言うと
|'t'|,|'e' |,|'s'|,|'t'|,|'.'|,|'t'|,|'x'|,|'t'|
がメモリの何処かに連続して格納されます。
このときに普通の文字列みたいにstr[]="test.txt"のstr[]のような文字列型の配列が無い状態だと思ってください。
なので、このままでは格納してもアクセスするものがありません(str[]のような配列が無いので)
そこで先頭のchar型をあらわすchar型のポインタが必要になるわけです。
*fnameはそれにアクセスする為のポインタと思ってください。
-
Jimmy
Re: 文字列の格納
丁寧な説明ありがとうございます。
やはりポインタについてもっと勉強したほうが良さそうです。赤鬼さんの説明でおおよその意味が分かりました。ありがとうございます!
やはりポインタについてもっと勉強したほうが良さそうです。赤鬼さんの説明でおおよその意味が分かりました。ありがとうございます!
-
赤鬼