いろいろなテクニック.Nucleo と DISCO-F746 用.
Dependencies: Array_Matrix mbed
ReferenceArray.hpp@1:bbb9f0c3e523, 2019-04-10 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Wed Apr 10 06:32:33 2019 +0000
- Revision:
- 1:bbb9f0c3e523
- Parent:
- 0:bb939e0bc6e2
2
Who changed what in which revision?
User | Revision | Line number | New 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 | } |