”本気で”エンジニアを目指すなら『TECH BOOST』キャリアから逆算された講座内容で、あなたの未来をサポートします!

【C言語超入門(第36回)】文字列とポインタの関係を知ろう

Pocket

C言語の重要な機能の一つである「ポインタ」は、文字列処理でよく用いられます。

そこで今回のC言語超入門では、ポインタについて理解を深めるために、
文字列とポインタの関係についてご説明していきます。

文字配列はポインタ変数のように変数アドレスを扱うことができる

まずは、以下のプログラム1を見てください。

これは、文字列をポインタで処理するサンプルプログラムです。

さて、プログラム1の実行結果を見ますと、変数mojiと変数ptが、まったく同じものになっていることが分かりますね。

まず処理の最初で、char型配列mojiの先頭アドレスがchar型ポインタ変数ptに代入しています。

ここでポイントになるのが、配列変数のアドレスを取り出すときは、変数名の頭にアドレスを取り出す演算子&が必要ない、ということです。

単一の変数の場合は、変数のアドレスを取り出したい場合、演算子&を変数名の前につける必要がありましたね。
(参考:C言語超入門(第35回))

でも配列変数の場合は、演算子&を使わなくても、まるでポインタ変数のように変数アドレスを扱うことができるのです。

ちなみに、あえて配列変数に&を付けてコーディングをしたいのでしたら、次のように記述することができます。

ポインタは、文字列の任意のアドレスを示すことができる

プログラム1では、ポインタ変数ptは、配列変数mojiの先頭アドレスを示していましたが、
ポインタ変数の値を書き換えることで、文字列の任意のアドレスを示すことができます。

例えば、moji[2]の場所を指し示すためには、*(pt+2)と表現します。(プログラム2)

さて、もう一つ、ポインタ変数の値を書き換えた処理方法をご紹介します。

以下のプログラム3は、配列要素番号を指定して文字出力した場合と、
ポインタ変数を書き換えて文字出力した場合の、サンプルプログラムです。

プログラム2やプログラム3をよく見ながら、配列要素番号を指定して文字出力する方法と、
ポインタ変数を書き換えて文字出力する方法について、理解を深めてください。

どちらの記述が良い、悪い、というものではありませんので、使い方はプログラマーの好みによります。

C言語超入門の第36回まとめ

さて今回のC言語超入門では、文字列とポインタの関係について解説してきましたが、いかがでしたでしょうか。

ここまで読んでみて、「配列を使えばポインタは必要ないのでは?」と感じたかもしれませんね。

確かに、その通り、とも言えるかも知れません。

なぜなら、分かりにくいポインタを使わなくても、配列を上手に使うことで記述できるケースは、よくあることだからです。

ですから、もし、いま一生懸命にポインタを理解しようとしてC言語の学習がストップしてしまうくらいなら、
まずは、C言語の基本的なことを一通り学んだ後、改めてポインタについて学習をした方が、結果としてC言語の習得が早まる、かもしれません。

C言語初心者のうちは、無理にポインタを覚えようとしなくても大丈夫ですよ。

ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

『TECH BOOST』なら、AI、IoT、ブロックチェーンなど最新技術が学べる!今流行りの技術を学んで、新たな一歩を踏み出そう!

プログラミングで挫折しそうなら、現役エンジニアにマンツーマンで相談してみませんか?オンラインのプログラミングスクール「TechAcademy」のメンターが対応。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る