今日の人気記事

  1. (前置・後置)インクリメント演算子, ++
  2. #include <stdio.h> と printf 関数 - プログラムの基本
  3. MinGW - gcc の環境設定(パスを通す) - Windows環境
  4. 変数名の付け方 - 命名規則
  5. 現在時刻の取得 - time関数

配列の要素をコピー(代入)

当ページのリンクには広告が含まれています。

スポンサーリンク

前回は「配列の要素を出力(表示)」をを紹介しました。

ここではC言語で「配列をコピー(配列の要素を代入)」する方法を紹介します。

配列のコピー

まずは次のプログラムをみてみましょう。

#include <stdio.h>

int main(void) {

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

  int b[3];

  /* 配列のコピー */
  b = a;

  return 0;
}

このプログラムはダメな例です!

他の変数と同じように配列をコピーしたプログラムを

/* 配列のコピー */
b = a;

コンパイルすると……

$ gcc array-copy.c 
array-copy.c:10:5: error: array type 'int [3]' is not assignable
  b = a;
  ~ ^
1 error generated.

エラーが表示され、コンパイルできません(実行ファイルが作成できません)。

それでは実際に適切な配列のコピー方法をみていきましょう。

配列のコピー方法はいくつかあるので、ひとつずつみていきましょう。

ひとつずつコピー

配列の要素をひとつずつコピーする方法です。

#include <stdio.h>

int main(void) {

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

  int b[3];

  /* 配列のコピー */
  b[0] = a[0];
  b[1] = a[1];
  b[2] = a[2];

  printf("%d %d %d\n", b[0], b[1], b[2]);

  return 0;
}

実行結果です。

0 1 2

このように配列に代入された値が出力されていますね。

for文を使って配列をコピー

配列の要素が少ない場合は「ひとつずつコピー」でも問題ありませんが、要素が増えてくると……ひとつずつコピーするのはめんどくさいですね。

そんなときはfor文を使って配列の要素をコピーしましょう。

#include <stdio.h>

int main(void) {

  int i;

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

  int b[3];

  /* 配列のコピー */
  for(i=0;i<3;++i){
    b[i] = a[i];
  }

  printf("%d %d %d\n", b[0], b[1], b[2]);

  return 0;
}

実行結果です。

0 1 2

ひとつずつコピーした場合と同じように配列に代入された値が出力されていますね。

基本構文 の人気記事

  1. 変数の値を出力 - printf 関数
  2. 関数のプロトタイプ宣言
  3. printf関数の変換指定子
  4. break文 - ループから抜ける
  5. 条件演算子(3項演算子)「? :」
  6. int main(void) - プログラムの基本
  7. 配列の要素を出力(表示)する
  8. 浮動小数点数型(float型 double型)の最大値と最小値 - float.h
  9. while文 - 繰り返し処理
  10. continue文 - ループをスキップ

関連記事(一部広告含む)