- ベストアンサー
ポインタ
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
プログラム初めて間もない人のようですので例えてみます 本で考えてみてください ポインタ:ページ番号 データ:ページに書かれている情報 みたいなものです 「*」「&」の違いは 「*」データのページ番号 「&」データ自身のページ番号 みたいなものでしょうか 例の関数を書きますと下のような使い方ですかね void ZeroSet( int* out_iNum ){ *out_iNum = 0; //渡されたページに0を書く } main(){ int iTest; ZeroSet( iTest );//書き込むページ番号を渡す //この段階でiTestには"0"が入っています } 間違っていたら次の方訂正お願いします
その他の回答 (3)
- mozura
- ベストアンサー率100% (1/1)
ごめんなさい 例を間違えていました void ZeroSet( int* out_iNum ){ *out_iNum = 0; //渡されたページに0を書く } main(){ int iTest; ZeroSet( &iTest );//書き込むページ番号を渡す(訂正) //この段階でiTestには"0"が入っています }
- arain
- ベストアンサー率27% (292/1049)
>プロの方に聞いても「住所」っていうだけで自分ではなんじゃそりゃ!って感じです。 いや、実際にそのとおりなんです。 プログラムはすべてメモリ上で動作します。このメモリには、1バイト単位ですべて「アドレス」というものが割り振られています。 地図でいう住所や番地と同じ意味と思ってください。 変数を宣言したりmalloc()を使用すると、メモリの空いているところから必要な分を確保します。 土地で言えば、未開拓の土地を家を建てたり公園にしたりするために造成したような感じです。 ポインタは「変数が確保されているメモリのアドレス」を格納しておくための専用の変数です。 土地に置き換えると「造成した土地は○○という場所だよ」ということが書いてあるのと同じです。 そのため「ポインタ」=「住所」という例えになります。
お礼
なるほど… 簡単なプログラムでは理解できるのですが、ループなどがあり、アドレスが変化するとチンプンカンプンになってしまいます。
- asuncion
- ベストアンサー率33% (2126/6286)
以下の各文はわかりますか? int a, b; int *p; a = 123; // aに123を代入 p = &a; // pはaを指す b = *p; // bは、ポインタpを経由して、aと同じ値になる
お礼
そこまではわかります。 a = 123; b = 123; ですよね。 でも大きなプログラムを作ると頭がこんがらがります;;
関連するQ&A
- C言語のポインタとスタックポインタ
プログラム始めて1ヶ月の初心者です。 C言語のポインタとスタックポインタというのは同じなのでしょうか。 スタックポインタの考えは大体理解出来たのですが C言語のポインタとなるとコードを見てもサッパリ分かりません。 ネットで調べても出てこなかったのでどなたか教えて下さい。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- ポインタについてアドバイスお願いします。
C言語の初心者です。 参考書でも書かれている事があるのですが、経験豊富な方でもポインタについて知ってるようで知ってないということがあります。って読んだことがあります。 実際、ポインタの必要性とはどのような時に必要なのでしょうか?? アドレス指定と言う風に、はじめはこの様な理解から入ると習いましたが、私には配列で十分間に合うのでは??って思っちゃうのです。 構造体の出力、アドレスの入れ替え、こんなときには便利なのかもしれませんが、C言語をやる上で絶対に必要・・、いったいなぜ??って考えちゃいます。 初心者なのに生意気な事言ってしまってもうしわけございません。 以前、私もそんな感じで悩んだ事あるって方がいらっしゃいましたら、ポインタとはこんな感じの時に初めて必要だと思うのだ!とご教授お願いいたします。 この様な質問に対しても、笑って答えてくださるような プロフェッショナルの方や、一般の凄い方のアドバイス、お待ちいたしております。 宜しくお願いいたします。
- ベストアンサー
- C・C++・C#
- C言語のポインタについて
C言語のポインタ(配列もポインタに含まれるのか?)について質問です。 係数を行列形式で表される状態方程式などの2変数以上の方程式を解くプログラムにおいてよくポインタや配列が使われているのですが、なぜポインタや配列を使うのでしょうか?利点など詳しく教えていただけませんでしょうか。。。 どなたか分かる方よろしくお願いします(*_*)
- ベストアンサー
- 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#
お礼
a = 2; p = *a; だとしたら a(2)がかかれているページはpということですか 例を見て、理解はできました。