- ベストアンサー
ポインターの使用法や利点
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数で変数を使いますよね。 その変数は関数の持ち物です。 だから、その関数から別の関数にその変数を渡したい時に、その変数自体は渡せません。 自分の物ですから。 仕方が無いので変数のコピーを渡します。 渡した変数は、渡された関数の持ち物です。 変数が荷物だとすると、いちいち荷物の中身を複製して、新しい入れ物を用意して、その入れ物を関数に渡します。 ちょっと面倒ですよね。 ポインタの場合、荷物の中身を複製せずに、ここにあるよという荷札みたいな物だけを渡します。 らくちんですよね。 いろんなことをする時に、荷札だけをやり取りすると楽な場合があります。 メモリ割り当て関数も、どこかに荷物を作って、その荷札だけを渡してくれます。 荷札は簡単に複製できるので、危険はありますが、やり取りが簡単なんです。 簡単にやり取りができないと合理的に使えないアルゴリズムが一杯あります。 それらを使うときにポインタが便利なんです。
その他の回答 (2)
- a-kuma
- ベストアンサー率50% (1122/2211)
配列しかないと、一直線のデータしか表現できません。 ポインタがあると、トーナメント表のようなツリー状のデータ表現や 輪っかのように循環したデータ表現をプログラムで扱えます。 そのようなデータを無理矢理配列に当てはめてもプログラムは作れる でしょうが、人が考える時の表現をなるべくそのまま扱う方がプログラム は作り易いですし、間違いが入る余地は少なくなります。
- selenity
- ベストアンサー率41% (324/772)
ポインタは、ないと大変困ります。 文字列操作、配列操作の際に実行時に動的に必要な 分だけメモリを確保するため、メモリの使用量は 少なくてすむ場合があります。 デメリットとしては、動的に確保したメモリは 必ず開放する必要があります。
関連するQ&A
- C言語のポインタの利点がわかりません
C言語を始めたばかりですが、 ポインタで間接参照するメリットが今一つわかりません。。。 特に、関数ポインタを使う場合には、 単なる関数ではだめなのでしょうか。 どなたか、かみ砕いて教えていただけないでしょうか。
- 締切済み
- C・C++・C#
- C言語のポインタとスタックポインタ
プログラム始めて1ヶ月の初心者です。 C言語のポインタとスタックポインタというのは同じなのでしょうか。 スタックポインタの考えは大体理解出来たのですが C言語のポインタとなるとコードを見てもサッパリ分かりません。 ネットで調べても出てこなかったのでどなたか教えて下さい。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- ポインタについてアドバイスお願いします。
C言語の初心者です。 参考書でも書かれている事があるのですが、経験豊富な方でもポインタについて知ってるようで知ってないということがあります。って読んだことがあります。 実際、ポインタの必要性とはどのような時に必要なのでしょうか?? アドレス指定と言う風に、はじめはこの様な理解から入ると習いましたが、私には配列で十分間に合うのでは??って思っちゃうのです。 構造体の出力、アドレスの入れ替え、こんなときには便利なのかもしれませんが、C言語をやる上で絶対に必要・・、いったいなぜ??って考えちゃいます。 初心者なのに生意気な事言ってしまってもうしわけございません。 以前、私もそんな感じで悩んだ事あるって方がいらっしゃいましたら、ポインタとはこんな感じの時に初めて必要だと思うのだ!とご教授お願いいたします。 この様な質問に対しても、笑って答えてくださるような プロフェッショナルの方や、一般の凄い方のアドバイス、お待ちいたしております。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- 配列とポインタの違いについて
書籍などで配列とポインタの違いについて勉強していますが、未だによくわかりません。 C言語における配列とポインタの違いについて教えて頂けますでしょうか?
- ベストアンサー
- C・C++・C#
- NULLポインタは0と書かなければだめ?
C++言語を使っています。 C++言語でNULLポインタを表す場合、0やNULLを使用しますが、 「NULLは単なるマクロなので本来は0を使わなければだめ」という話を聞きました。 つまり、 int *p = 0; が本当の正しいNULLポインタであり、 int *p = NULL; は推奨されていない(?)NULLポインタというようです。 今まであまり疑うことなく、NULLポインタを表すのにNULLを使用していましたが、 上記の内容は本当でしょうか。
- ベストアンサー
- C・C++・C#
- アドレスとポインタがどうしても理解できない
C言語を独学しているのですが、どの参考書読んでも、アドレスとポインタの理解ができません。アドレスとポインタを使わなくても別に開発できるのではないかと思います。どなたか、アドレスとポインタを初心者でも分かるように分かりやすく教えて頂けないでしょうか?
- ベストアンサー
- C・C++・C#