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

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

関連記事

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

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

C++のマルチスレッド処理のサンプルや概要について

  <目次> (1) C++のマルチスレッド処理のサンプルや概要について  (1-1) C++のマルチスレッドの概要  (1-2) 構文1:関数ポインタ式  (1-3) 構文1(例):関数ポ …

C++の動的メモリ割当と静的メモリ割当の違いについて

  <目次> (1) C++の動的メモリ割当と静的メモリ割当の違いについて  (1-1) 静的メモリ割当てとは?  (1-2) 動的メモリとは?  (1-3) 動的メモリの割当て  (1-4 …

C++の構造体とは?の作り方や使い方について

  <目次> (1) C++の構造体とは?の作り方や使い方について  (1-1) 構造体とは?  (1-2) サンプルプログラム  (1-3) 構造体の変数を定義する方法  (1-4) 構造 …

C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処

  <目次> (1) C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処  (1-1) エラーメッセージ  (1-2) 原因 …

  • English (United States)
  • 日本語
Top