変数aに変数bをa=b;と代入したように配列hairetuboxに配列hairetuhakoをhairetubox=hairetuhako;のように直接代入して中身のデータを渡すことはできません😊


ソーラー「じゃあ 


変数のようにある配列のデータを別の配列に代入する方法はあるのかな?


変数同士の場合だと

int a=1;

int b=2;

a=b;

とすると


aに格納されている値は


a=2になるよね。」


マックス「まず


配列宣言int hairetubox[3];をおこない

hairetubox[0]

hairetubox[1]

hairetubox[2]

をつくり

hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;


と数値を代入するだろう


そのあと


配列宣言int hairetuhako[3];をおこない

hairetuhako[0]

hairetuhako[1]

hairetuhako[2]

をつくり

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


と数値を代入するだろう😊


あとは


hairetubox[3]=hairetuhako[3];


とすればいいだけじゃないか


こうすれば

配列hairetuhako[3]内のデータはhairetubox[3]にわたされ


hairetubox[0]=3;

hairetubox[1]=4;

hairetubox[2]=5;


になるってわけだ」


ソーラー「あ、ほんとうだ それでうまくいきそうだね。」


マックス

「簡単、簡単


冴えてるな~オレ」


ソーラー「いい発想だね」


マックス「はははっ まあ 、みてな


では プログラムを作製し」


#include <stdio.h>


int main(void)

{

int hairetubox [3] ;

hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;



hairetubox[3]=hairetuhako[3];

/*さあっこのように

配列hairetubox[3]に

配列hairetuhako[3]を

代入しhairetuhako[3]の中身のデータを

hairetubox[3]に渡すことができるのでしょうか


できそうですね*/



printf("%d\n",hairetubox[0]);

printf("%d\n",hairetubox[1]);

printf("%d\n",hairetubox[2]);


return 0;

}


マックス「コンパイルっと」


(EAZY IDEC)の場合

(Visual Studio)の場合



          プログラムを実行します



マックス「プログラムを実行しますの表示か・・・


コンパイルできてるようだ


ははは 簡単すぎたか・・・」


コンパイル結果

1

2

3


マックス「ははは ・・・は?


配列hairetuhako[3]内のデータをhairetubox[3]に


わたしたはず・・・なのに


hairetubox[0]

hairetubox[1]

hairetubox[2]


に格納されている数値は


hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;


のまま・・・か???


hairetubox[0]=3;

hairetubox[1]=4;

hairetubox[2]=5;


になってない・・・


ちゃんと コンパイルできてる・・ような気がするんだが・・・


?」


ソーラー「変ですね


こんな簡単な命令文


hairetubox[3]=hairetuhako[3];


が実行できてないなんて」


マックス

「ははっまだまだ余裕だな


配列hairetuhako[3]内のデータをhairetubox[3]に


わたす


hairetubox[3]=hairetuhako[3];


この書き方が


まちがってるな


hairetubox=hairetuhako;


これが正解だろう ははははははは


ではプログラムを構成し直し


#include <stdio.h>


int main(void)

{

int hairetubox [3] ;

hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;



hairetubox=hairetuhako;

/*これなら配列hairetuboxに配列hairetuhakoを代入し

hairetuhako[3]の中身のデータを

hairetubox[3]に渡すことができるのでしょうか


できそうですね*/



printf("%d\n",hairetubox[0]);

printf("%d\n",hairetubox[1]);

printf("%d\n",hairetubox[2]);


return 0;

}


マックス「はは

コンちゃん」


コンパイル結果


(EAZY IDECの場合)


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/ wwww/main.c」の

「17行目」で記述エラーを発見しました。

「lvalue」を付け忘れています。



Visual Studioの場合

エラー C3863 配列型 'int [3]' を割り当てることはできません。

エラー (アクティブ) E0137 式は変更可能な左辺値である必要があります




マックス「え~なんでぇ


もう、しんじらんな~い


コンパイルすらできないじゃんか・・・」


ソーラー「???


なんかできそうでできないですね。」


マックス「まだまだ 大丈夫だ


次は

hairetubox[]=hairetuhako[];



これで決まりのようだな」


ソーラー「まあ、そうなりますよね😊


これが正解かな」


マックス「

では


さらにプログラムを構成し直し


#include <stdio.h>


int main(void)

{

int hairetubox [3] ;

hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;



hairetubox[]=hairetuhako[];

/*これなら配列hairetubox[]に配列hairetuhako[]を代入し

hairetuhako[3]の中身のデータを

hairetubox[3]に渡すことができるのでしょうか


これが公式な記述方法なのかな?

*/



printf("%d\n",hairetubox[0]);

printf("%d\n",hairetubox[1]);

printf("%d\n",hairetubox[2]);


return 0;

}


マックス「コン・パ・イ・ル」



コンパイル結果


EAZY IDECの場合


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/ wwww/main.c」の

「17行目」で記述エラーを発見しました。

「identifier」を付け忘れています。


Visual Studioの場合


エラー C2059 構文エラー: ']'

エラー (アクティブ) E0029 式が必要です

エラー (アクティブ) E0029 式が必要です




マックス「「identifier」なぞ「17行目」でつけ忘れとらんわ~い」


ソーラー「どうも


配列に配列を直接代入して


数値データを渡すことはできないようです。」


マックス「おっかしいなあ?


ふつう代入できるように開発しそうなものなんだが・・・」



ソーラー「大丈夫です


次のプログラムのように

配列hairetuhako内のデータを1個ずつ


次のように

配列変数同士で


hairetubox[0]=hairetuhako[0];

hairetubox[1]=hairetuhako[1];

hairetubox[2]=hairetuhako[2];


配列hairetuboxに渡せばいいんですよ



#include <stdio.h>


int main(void)

{

int hairetubox [3] ;

hairetubox[0]=1;

hairetubox[1]=2;

hairetubox[2]=3;



int hairetuhako[3] ;

hairetuhako[0]=3;

hairetuhako[1]=4;

hairetuhako[2]=5;


hairetubox[0]=hairetuhako[0];

hairetubox[1]=hairetuhako[1];

hairetubox[2]=hairetuhako[2];



printf("%d\n",hairetubox[0]);

printf("%d\n",hairetubox[1]);

printf("%d\n",hairetubox[2]);


return 0;

}


コンパイル結果

3

4

5


マックス「これだと データをわたすことができるのか・・・」


ソーラー「配列変数hairetubox[0]やhairetuhako[0]は


変数とよばれるように


変数のように扱えるみたいですね」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます