現在C言語の基礎を一通り進めている者です。
タイトルにもあるのですが、
ポインタ変数testには文字列の先頭のアドレスが格納されている(char *test; test = "ABCDE";
)にも関わらず、
なぜ printf("%s\n", test);
した場合に先頭のアドレスの値(//=> A
)ではなく、
全体の値(//=> ABCDE
)が出力されるのでしょうか?
色々と調べてみたのですが、
明確な回答を見つけることができなかったため、ご質問させて頂きます。
(※コード全体は下記を参照ください)
コード全体
lang
1#include <stdio.h> 2 3int main(){ 4 5 // char型のポインタ変数 testを宣言 6 char *test; 7 8 // 先頭アドレス、つまり"A”のアドレスをポインタ変数testに代入する 9 test = "ABCDE"; 10 11 // 値を出力(文字列を出力する場合は*は不要) 12 printf("%s\n", test); //=> ABCDE なぜ出力されるのがAではないのか? 13 printf("%c\n", test[0]); //=> A 14 printf("%c\n", test[1]); //=> B 15 printf("%c\n", test[2]); //=> C 16 17 // アドレスを出力 18 printf("%p\n", test); //=> 0x103f61f82 19 printf("%p\n", &test[0]); //=> 0x103f61f82 20 printf("%p\n", &test[1]); //=> 0x103f61f83 21 printf("%p\n", &test[2]); //=> 0x103f61f84 22 23}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/08 07:52