HOME»基本情報技術者試験掲示板»ポインタについて
投稿する
ポインタについて [1190]
。さん(No.1)
数値へのポインタ、180という数値が格納されているアドレスを保持するaがあった時、180を出力するには
printf("%d,*a);
と書くと思いますが、
(%dで正しい値が出るかはわからないですが、aだけだとアドレスを出力するので)
ポインタの文字列では、123と言う文字列の先頭の1が格納されているアドレスを保持するptrがあるとして、123と表示するためには、
printf("%s,ptr);
となる。
のですが、ここで何故*が必要ないのでしょうか?
*無しでは先頭アドレスを渡しているだけに思うのですが、、、。
%sが先頭アドレスを渡されればその格納先の値を出力するような仕様なのでしょうか?
printf("%d,*a);
と書くと思いますが、
(%dで正しい値が出るかはわからないですが、aだけだとアドレスを出力するので)
ポインタの文字列では、123と言う文字列の先頭の1が格納されているアドレスを保持するptrがあるとして、123と表示するためには、
printf("%s,ptr);
となる。
のですが、ここで何故*が必要ないのでしょうか?
*無しでは先頭アドレスを渡しているだけに思うのですが、、、。
%sが先頭アドレスを渡されればその格納先の値を出力するような仕様なのでしょうか?
2018.04.14 14:46
。さん(No.2)
Cです
2018.04.14 14:46
0000さん(No.3)
そのとおりですね
%sは指定されたアドレスからNULL文字まで文字を表示するので
たとえば
char str[10]="abcdefg";
printf("%s",&str[2]);
の場合では cdefg と表示されます
もちろん先頭アドレスを渡せば最初から最後までのすべての文字が表示されます
%sは指定されたアドレスからNULL文字まで文字を表示するので
たとえば
char str[10]="abcdefg";
printf("%s",&str[2]);
の場合では cdefg と表示されます
もちろん先頭アドレスを渡せば最初から最後までのすべての文字が表示されます
2018.04.14 15:05
。さん(No.4)
なるほど、ありがとうございます
例えにある、&str[2]の&を取ったとしても%sならば同じ出力になるのですかね?
例えにある、&str[2]の&を取ったとしても%sならば同じ出力になるのですかね?
2018.04.14 15:34
。さん(No.5)
いや、&を取るとcだけを出力ですかね?
アドレス先の文字を渡しているならば
アドレス先の文字を渡しているならば
2018.04.14 15:38