配列の要素をコピー(代入)
当ページのリンクには広告が含まれています。
スポンサーリンク
前回は「配列の要素を出力(表示)」をを紹介しました。
ここでは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
ひとつずつコピーした場合と同じように配列に代入された値が出力されていますね。