Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C++

C++のポインタとは?概念や基本的な使い方をご紹介

投稿日:2021年8月26日 更新日:

 

<目次>

(1) C++のポインタとは?概念や基本的な使い方をご紹介
 (1-1) はじめに
 (1-2) ポインタとは?

(1) C++のポインタとは?概念や基本的な使い方をご紹介

「ポインタ」は一言で表すと「変数の『メモリ上のアドレス』を保持する変数」です。本記事では、そのポインタの構文や使い方の例などをご紹介いたします。

(1-1) はじめに

C++では変数の「メモリ上のアドレス」(データが格納されているメモリ上の位置)を取得するために「&」オペレーターを使用する事が出来ます。例えば次の例で「&fruit」を出力すると「fruit」という変数のアドレスが使えます。
 
(図110)
 
(例)
 
string fruit = "Apple";
//# stringの「値(Apple)」を出力
cout << fruit;
//# stringの「アドレス(006FFA94)」を出力
cout << &fruit;
 
(図111)

(1-2) ポインタとは?

それに対して、ポインタは変数の「メモリ上のアドレス」を保持する変数です(「&」を付けずとも、元々変数の値ではなくアドレスを保持)。
 
ポインタ値は変数と同じデータ型(「int」や「string」)に「*」オペレーターを付与して定義されます。そして、使用している変数のアドレス値(例:「&fruit」)をそのポインタに格納します。
 
(図120)
(お作法)
・「[データ型]* [変数名]」の形式で記述(例:string* fruit)
・代入するアドレスのデータ型は、ポインタの型と同一にする必要あり
 
(例)
下記の例では、string型のポインタとして「fruit_pt」を定義しており、string型の変数「fruit」のアドレス値を受け取っています。その際に前に&を付けて「&fruit」の形でポインタに代入します。
 
//# 通常の変数定義
string fruit = "Apple";

//# ポインタの定義
//# ポインタの名前:fruit_pt
//# ポインタに格納するアドレス:&fruit
string* fruit_pt = &fruit;

//# 変数の出力
cout << fruit << endl;

//# 変数のメモリアドレスの出力
cout << &fruit << endl;
	
//# ポインタが保持するアドレスを出力
cout << fruit_pt << endl;

//# ポインタの参照する値を出力
cout << *fruit_pt << endl;
 
(図121)
 
(備考)
ポインタの宣言における「*」の位置は少しルールが緩く、次のようなパターンが許容されますが、「string*」のように型のすぐ後ろに付ける方が混同が少なく望ましいです。
 
//# 以下はいずれも同じ意味
string* fruit_pt;
string *frui_ptt
 

Adsense審査用広告コード


Adsense審査用広告コード


-C++

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

GDBの使い方をC++のプログラムのデバッグを例にご紹介

  <目次> (1) GDBの使い方をC++のプログラムのデバッグを例にご紹介  (1-1) GDBのデバッグのシナリオ概要(例)  (1-2) GDBのデバッグ手順(例)  (1-3) そ …

C++の「::」の記載の意味について

  <目次> (1) C++の「::」の記載の意味について  (1-1) 「::」の意味は?  (1-2) サンプル①:スコープ演算子「::」を使ってグローバル変数にアクセス  (1-3) …

C++の値渡しと参照渡しの使い分けや違いについて

<目次> (1) C++の値渡しと参照渡しの使い分けや違いについて  (1-1) 「値渡し」とは?  (1-2) 「参照渡し」とは?  (1-3) 「値渡し」と「参照渡し」の使い分け (1) C++の …

ポインタと参照の違いについてサンプルPGを使ってご紹介

  <目次> (1) ポインタと参照の違いについてサンプルPGを使ってご紹介  (1-1) ポインタと参照の概要  (1-2) 両者の違い①:宣言/初期化  (1-3) 両者の違い②:再代入 …

ValgrindのPossibly Lostの意味や実際のサンプルをご紹介

  <目次> (1) ValgrindのPossibly Lostの意味や実際のサンプルをご紹介  (1-1) Valgrindの「Possibly Lost」はどんな状況?  (1-2) …

  • English (United States)
  • 日本語
Top