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