Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

【C/C++入門】ポインタ演算 *(array+i) を使った配列要素へのアクセス方法

この記事では、C++で配列の要素にアクセスする際の、あまり知られていない表現方法を紹介するシンプルなプログラムを解説します。

#include<iostream>
using namespace std;
int main() {
   int array[5] = {7,7,7, 6, 6};
   for (int i = 0; i < 5; i++)
      cout<<*(array+i);
   return 0;
}

出力結果

7 7 7 6 6

プログラムの解説

通常、配列の要素には array[i] のような添字(インデックス)表記でアクセスします。しかし、このプログラムでは *(array+i) というポインタ演算を用いた表現を採用しています。

C言語およびC++では、配列名は先頭要素へのポインタとして扱われます。そのため、array + i は「配列の先頭アドレスから i 要素分進んだアドレス」を意味し、そこに間接参照演算子 * を付けることで、該当するアドレスに格納された値を取得できます。

つまり、*(array+i)array[i] と完全に等価です。実際、コンパイラの内部処理では添字表記もポインタ演算へと変換されるため、両者は同じ動作になります。このサンプルは、「配列とポインタが密接に関係している」というC/C++の重要な特徴を示す好例といえるでしょう。

  1. C++で配列内の重複しない(ユニークな)要素の積を求める方法

    重複する要素を含む配列が与えられたとき、その配列内で重複していない(ユニークな)要素をすべて掛け合わせた積を求めて結果を表示するのが、本記事の課題です。例入力: arr[] = {2, 1, 1, 2, 3, 4, 5, 5 } 出力: 120 説明: 1、2、5は複数回出現するため、最初の出現のみを考慮します。 したがって結果は 1 × 2 × 3 × 4 × 5 = 120 となります。 入力: arr[] = {1, 10, 9, 4, 2, 10, 10, 45, 4 } 出力: 32400 説明: 10と4は複数回出現するため、最初の出現のみを考慮します。 したがって結果は 1 ×

  2. 配列の全要素を乗算するC++プログラムの解説

    整数型の要素を持つ配列が与えられたとき、配列内のすべての要素を掛け合わせ、その積を表示することを考えます。本記事では、この問題をC++(C言語スタイルのコード)で解く方法を、アプローチ、アルゴリズム、サンプルコード、実行結果まで順を追って解説します。 例 入力: arr[]={1,2,3,4,5,6,7} 出力: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 入力: arr[]={3, 4, 6, 2, 7, 8, 4} 出力: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 解き方のアプローチ この問題は、累積用の一時変数を用意し、配列の要素を先頭