C/C++

ポインタ

投稿日:2018年6月6日 更新日:

 

ポインタ

  • int* a
  • 変数 a の中身はアドレスを示す。
  • ポインタ変数 *a はアドレス(aの値)のメモリの値をポインタ変数(*a)として扱う事ができる。
  • *a=1; はaの値(アドレス)のメモリに1を代入する。aの値が100の場合、アドレス100の番地に1を代入する。*(100) = 1。
  • a=1 と *(&a)=1と等価。
  • オブジェクトからクラスメンバにアクセスする場合にはドット演算子「 . 」 を使う。
  • ポインタからクラスメンバにアクセスする場合にはアロー演算子「 -> 」を使う。
  • 関数へ引数にポインタ渡しする場合にはアドレス演算子「 & 」を使う。

 

 

ローカル変数のポインタを戻り値として返す場合

以下のプログラムは正しく動作しない。 return文が返している str は、自動記憶域期間を持つローカル変数ですから、 関数から抜け出してしまった後は、もうメモリ上に残っている保証がない。

 

基底クラスのポインタを使って派生クラスを動的に確保して受け取ったりする

 

 

 

参考にさせて頂いたページ

C言語編 第33章 ポインタ③(引数や戻り値への利用)

それ、ポインタ使わなくてもできるよ:C言語のポインタとC++の流儀

 

 

 

スポンサーリンク

スポンサーリンク

-C/C++

執筆者:

関連記事

C++の参照

参照変数 参照の宣言 : 「 参照先の型&  参照変数名 = 参照先の変数; 」 参照変数は宣言と同時に代入する必要がある。初期化で必ず参照先の変数を指定する必要がある。参照とは「他の変数を指 ...

C言語その他

グローバル変数のstatic属性 グローバル変数にstaticを付けた時のstaticは「静的」という意味ではなく、スコープが「宣言位置からそのコンパイル単位の終わりまで」となる。 第10回目 4大メ ...

Linux C ライブラリについて

実行時のライブラリ探索 実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。 環境変数LD_LIBRARY_PATHでも指定可能。 Linux共有ライブラリの簡単なまと ...


プロフィール
管理人です。 業務プログラムに勤しむ人です プロフィール詳細


検索

カテゴリ

アーカイブ