質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

Q&A

解決済

4回答

1658閲覧

初歩的なC言語のポインタの問題で質問です

ababab

総合スコア47

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ポインタ

ポインタはアドレスを用いてメモリに格納された値を"参照する"変数です。

0グッド

0クリップ

投稿2015/07/20 12:01

このプログラムを実行すると「print」と表示されるプログラムがあります。

char str[] = "print";
char *pl
p = (1);
while ( (2) != '¥0' ) {
putchar( (2) );
(3);
}

という問題で、(1)はstr、(2)は*pというところまでわかったのですが(3)がわかりません。
(3)の解答はなんでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

とりあえず、ヒントを出しますので、わからなかったら解答を出します。

まず、もし(3)で何もしなかったらを考えます。

C

1while ( *p != '¥0' ) { 2 putchar( *p ); 3}

これだとpはいつも同じ所を見に行っているので出力は"pppppp..."と
永遠に出力されるだけになりますよね?
でも本当は'p'の次は'r'を出したいとなります。

そこで、次にpがどうあるべきかを考えます。
このwhileループでは、ポインタpは最初、"print"文字列の'p'のアドレスを指していますよね?
なので、'p'が出力されるのでした。
では、これを二回目は'r'が出るようにするにはどうするか?
そう、同じように出力するには ポインタp"print"文字列の'r'のアドレスを
指すようにすればいいのです。
とすると、(3)の部分でポインタpを一歩先に進めれば…

おっと、時間となったようです。また来週。

投稿2015/07/20 12:18

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

この問題が分からないということは、ポインタをなぜ使うのか、
どうやって使うのか、分からないということです。

ぜひ、ポインタ、文字列、繰り返し処理(while)を学んだ
教科書や参考書、Webサイトなどのテキストを読み返し、
組み合わせてどう使うかのイメージをつかんでください。

そうすればおのずと解けます。

投稿2015/07/20 12:19

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ポインタ変数が宣言しているものと使用しているものが違っていますが。

というのは置いといて、文字配列strの中身である"print"を一時ずつ表示するというプログラムですね。ただ、文字配列の変数であるstrを使わず、ポインタを通して表示させるというものです。
文字配列の場合は添字を操作する(増やしていく)ことで次の文字データにアクセスしました。ではポインタの場合はというと、ポインタの位置をずらしていけばいいわけです。ポインタの位置をずらすには…。
とりあえず、ヒントまで。

投稿2015/07/20 12:13

archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ポインタは参照先を進めてあげましょう。
進めなければ、同じ場所を指し続けますよ。

投稿2015/07/20 12:12

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問