ポインタについて

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
さん  
(No.1)
数値へのポインタ、180という数値が格納されているアドレスを保持するaがあった時、180を出力するには
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 と表示されます
もちろん先頭アドレスを渡せば最初から最後までのすべての文字が表示されます
2018.04.14 15:05
さん  
(No.4)
なるほど、ありがとうございます

例えにある、&str[2]の&を取ったとしても%sならば同じ出力になるのですかね?
2018.04.14 15:34
さん  
(No.5)
いや、&を取るとcだけを出力ですかね?
アドレス先の文字を渡しているならば
2018.04.14 15:38

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop