HOME»基本情報技術者試験掲示板»ポインタについて

基本情報技術者試験掲示板

掲示板検索:
スレッド一覧

ポインタについて[1190]

さん(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

返信投稿用フォーム

スパム防止のために初投稿日から2カ月以上経過したスレッドへの書き込みは禁止しています。

© 2010-2018 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop