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

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2000文字以内)

記事削除用パスワード(8文字以内)

プレビュー

※宣伝や迷惑行為を防止するため当サイト以外のURLを含む記事の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2010-2018 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop