いろいろなテクニック.Nucleo と DISCO-F746 用.

Dependencies:   Array_Matrix mbed

Committer:
MikamiUitOpen
Date:
Wed Apr 10 06:32:33 2019 +0000
Revision:
1:bbb9f0c3e523
Parent:
0:bb939e0bc6e2
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:bb939e0bc6e2 1 //---------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 2 // 異なる型の Array クラスの参照の代入の例
MikamiUitOpen 0:bb939e0bc6e2 3 //---------------------------------------
MikamiUitOpen 0:bb939e0bc6e2 4 #define DEBUG_ARRAY_CHECK // 範囲のチェック有効
MikamiUitOpen 0:bb939e0bc6e2 5 #include "Array.hpp"
MikamiUitOpen 0:bb939e0bc6e2 6 #include <string>
MikamiUitOpen 0:bb939e0bc6e2 7
MikamiUitOpen 0:bb939e0bc6e2 8 using namespace Mikami;
MikamiUitOpen 0:bb939e0bc6e2 9
MikamiUitOpen 0:bb939e0bc6e2 10 struct struct1 { int x1; float x2; string str; };
MikamiUitOpen 0:bb939e0bc6e2 11 struct struct2 { int x1; float x2; string str; };
MikamiUitOpen 0:bb939e0bc6e2 12
MikamiUitOpen 0:bb939e0bc6e2 13 void ReferenceArray()
MikamiUitOpen 0:bb939e0bc6e2 14 {
MikamiUitOpen 0:bb939e0bc6e2 15 // 複合リテラルを使ってデータを割り当てる
MikamiUitOpen 0:bb939e0bc6e2 16 Array<struct1> xa1(2, (struct1[]){{ 8, 0.2f, "abc"},
MikamiUitOpen 0:bb939e0bc6e2 17 {-3, 0.4f, "xyz"}});
MikamiUitOpen 0:bb939e0bc6e2 18
MikamiUitOpen 0:bb939e0bc6e2 19 // 同じデータ配置で,型名の違う構造体同士で,片方の構造体 struct1 の参照を
MikamiUitOpen 0:bb939e0bc6e2 20 // もう一方の構造体 struct2 の参照に代入する
MikamiUitOpen 0:bb939e0bc6e2 21 // xa2 は xa1 の別名なので,xa2 の内容を変えると,xa1 の対応する内容も変わる
MikamiUitOpen 0:bb939e0bc6e2 22 Array<struct2> &xa2 = (Array<struct2> &)xa1; // ここで使っている
MikamiUitOpen 0:bb939e0bc6e2 23
MikamiUitOpen 0:bb939e0bc6e2 24 printf("\r\nxa1[1].x1 = %d\r\n", xa1[1].x1);
MikamiUitOpen 0:bb939e0bc6e2 25 printf("xa1[1].x2 = %f\r\n", xa1[1].x2);
MikamiUitOpen 0:bb939e0bc6e2 26 printf("xa1[1].str = %s\r\n", (xa1[1].str).c_str());
MikamiUitOpen 0:bb939e0bc6e2 27
MikamiUitOpen 0:bb939e0bc6e2 28 printf("\r\nxa2[1].x1 = %d\r\n", xa2[1].x1);
MikamiUitOpen 0:bb939e0bc6e2 29 printf("xa2[1].x2 = %f\r\n", xa2[1].x2);
MikamiUitOpen 0:bb939e0bc6e2 30 printf("xa2[1].str = %s\r\n", (xa2[1].str).c_str());
MikamiUitOpen 0:bb939e0bc6e2 31
MikamiUitOpen 0:bb939e0bc6e2 32 xa2[1].str = "ABCDEFG"; // xa2[1].str に新たな値を代入した
MikamiUitOpen 0:bb939e0bc6e2 33 printf("\r\nxa2[1].str に新たな値を代入したので,");
MikamiUitOpen 0:bb939e0bc6e2 34 printf("xa1[1].str の値も変わっている\r\n");
MikamiUitOpen 0:bb939e0bc6e2 35 printf("xa1[1].str = %s\r\n", (xa1[1].str).c_str());
MikamiUitOpen 0:bb939e0bc6e2 36 }