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

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

関連記事

C++における「>>」の意味について

  <目次> (1) C++における「>>」の意味について  (1-1) 概要  (1-2) サンプルプログラム  (1-3) どんな時に使われる?⇒データ圧縮  (1-4) 備 …

Valgrindとは?使い方や概要をご紹介(メモリリーク検知ツール)

  <目次> (1) Valgrindとは?使い方や概要をご紹介(メモリリーク検知ツール)  (1-1) Valgrindとは?  (1-2) Valgrindの導入方法  (1-3) Va …

CORBA通信のPOA(Portable Object Adapter)とは?

  <目次> (1) CORBA通信のPOA(Portable Object Adapter)とは?  (1-1) 概要と特徴  (1-2) 一般的なPOAの処理構成  (1-3) POAの …

Base64とは?概要やアルゴリズムについてご紹介

  <目次> (1) Base64とは?概要やアルゴリズムについてご紹介  (1-1) Base64とは?  (1-2) Base64の仕組み  (1-3) Base64の実装 (1) Ba …

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

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

  • English (United States)
  • 日本語
Top