●学校情報

講座一覧・募集状況

学習方法

学習サポート

修了生の評価

受講生の横顔

当学院について

入学相談

入学手続

 

●講座情報

SE養成講座

プログラマ養成講座

C言語講座

Java講座

C#講座

VB講座

C++講座

Ruby講座

Python講座

HTML講座

JavaScript講座

PHP講座

応用情報試験講座

基本情報試験講座

ITパスポート試験講座

Excel基礎講座

Excel応用講座

Excelマクロ講座

ExcelVBA講座

Access基礎講座

Access応用講座

 

●関連コラム

関連コラム

関連用語集

 

logo

 

 

関連用語集

ポインタでメモリを自在に操る!C言語の「ポインタ演算」をやさしく解説

C言語では、ポインタを使ってメモリ上のデータを直接操作できます。
さらに、ポインタ同士での加減算や比較といった「ポインタ演算」も可能です。
配列処理やデータの効率的なアクセスに欠かせないテクニックです。

ポインタ演算とは?

ポインタ演算とは、ポインタの値(アドレス)を使って加算・減算・比較などを行うことです。
特に配列と組み合わせると、添字なしでアクセスできたりします。

ポインタの加算・減算

ポインタに数値を足すと、その分だけ次の要素のメモリアドレスに進みます。

int nums[] = {10, 20, 30};
int *p = nums;

printf("%d\n", *p);     // 10
printf("%d\n", *(p+1)); // 20
printf("%d\n", *(p+2)); // 30
    
  • p + 1次のint型(4バイト) へ移動
  • p - 11つ前のint型 へ戻る

配列アクセスとポインタ演算の関係

int a[] = {1, 2, 3};
int *p = a;

a[1]      == *(a + 1);
p[2]      == *(p + 2);
*(p + i)  == p[i];  // 完全に同じ意味!
    

ポインタは、配列のインデックス操作と同じように使えます。

ポインタの比較

int nums[] = {5, 10, 15};
int *p1 = &nums[0];
int *p2 = &nums[2];

if (p1 < p2) {
    printf("p1はp2より前の要素を指している\n");
}
    

同じ配列内であれば、ポインタ同士の比較も可能です。

注意点

  • 型に応じて進むアドレスの幅が変わる(例:intなら4バイト単位)
  • 無効なアドレスにアクセスしないよう注意(未定義領域)
  • 違う配列間での比較や演算は危険

まとめ

ポインタ演算とは、ポインタを使ってメモリ上の位置を計算・操作するテクニックです。
配列との相性が非常によく、p + 1p[i] のような書き方で効率よくデータにアクセスできます。
初心者の方は、配列 × ポインタの組み合わせから練習してみましょう!

 

C言語関連用語集

−−−−−  C言語  −−−−−

C言語のスタート地点「main関数」とは?初心者向けにやさしく解説

画面に文字を表示する「printf関数」とは?初心者向けにやさしく解説!

ユーザーから値を受け取る「scanf関数」とは?初心者向けにやさしく解説!

データを入れて使いまわす「変数(variable)」とは?C言語の基本をやさしく解説

データの種類を決める「データ型」とは?C言語の基本をやさしく解説!

計算や比較に使う「演算子」とは?C言語の基本を初心者向けにやさしく解説!

条件に応じて動きを変える「if / else」とは?C言語の基本をやさしく解説!

同じ処理を何度も行う「繰り返し処理(for / while / do-while)」をやさしく解説!

処理をまとめて再利用!「関数(function)」とは?C言語の基本をやさしく解説

関数の「答え」を返す!C言語の基本「戻り値(return)」をやさしく解説

アドレスを扱う魔法の道具「ポインタ(pointer)」とは?C言語の基本をやさしく解説

関数に値を渡す2つの方法「値渡し」と「参照渡し」って何?C言語の基本をやさしく解説!

データをまとめて扱う「配列(array)」とは?C言語の基本をやさしく解説!

複数の文字をまとめて扱う「文字列(string)」とは?C言語の基本をやさしく解説!

異なるデータをまとめて管理!C言語の「構造体(struct)」をやさしく解説

1つのメモリを共有する「共用体(union)」とは?C言語の特徴的な機能をやさしく解説!

状態や選択肢を名前で管理!C言語の「列挙型(enum)」をやさしく解説

ポインタでメモリを自在に操る!C言語の「ポインタ演算」をやさしく解説

実は似ている!?C言語の「ポインタと配列の関係」をやさしく解説!

必要な分だけメモリを使う「動的メモリ確保(malloc / free)」とは?C言語の基本をやさしく解説!

C言語でよく使う「標準ライブラリ(stdio.h, stdlib.h, string.h)」をやさしく解説!

C言語でファイルを読み書き!「ファイル操作(fopen, fclose, fprintf など)」をやさしく解説

コードの中でよく使う「マクロ(#define)」とは?C言語の基本をやさしく解説!

C言語の裏側で活躍する「プリプロセッサ(#include, #ifdef など)」とは?

プログラムを実行できる形に変換!「コンパイル(gccなど)」とは?C言語の基本をやさしく解説

複数の部品をひとつにまとめる!「リンカ(linker)」とは?C言語の基本をやさしく解説

初心者が知っておきたい「エラーと警告」の基本(コンパイルエラー・実行時エラーなど)

ポインタの初期化と安全確認に!「NULLポインタ」とは?C言語の基本をやさしく解説

プログラムのメモリの仕組み「スタック / ヒープ」とは?C言語の基本をやさしく解説!

数値をビット単位で操作する!「ビット演算(&、|、^、~、<<、>>)」をやさしく解説

 

 

学校案内

17,000円の講座から!

質問には24時間以内に返答・質問回数は無制限など万全の学習サポート!

是非ご閲覧下さい!

札幌情報技術学院インターネットカレッジ トップページ