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

Dependencies:   Array_Matrix mbed

Revision:
0:bb939e0bc6e2
Child:
1:bbb9f0c3e523
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/StructCopy.hpp	Sun Oct 15 11:41:48 2017 +0000
@@ -0,0 +1,29 @@
+// 同じ構造で異なる構造体のコピー
+
+void StructureCopy()
+{
+    struct myStructA{ int a1; int a2; };
+    struct myStructB{ int a1; int a2; };
+    
+    myStructA x1 = { -1, 17 };
+    myStructB y1;
+//------------------------------------------------
+    y1 = *(myStructB *)&x1;     // ディープ・コピー
+//------------------------------------------------
+    printf("\r\ny1: %2d, %d\r\n", y1.a1, y1.a2);
+    y1.a1 = 2;
+    printf("y1: %2d, %d\r\n", y1.a1, y1.a2);
+    printf("x1: %2d, %d\r\n", x1.a1, x1.a2);    // x1.a1 は書き換わっていないので
+                                                // y1 への代入はシャロ―・コピーではなく
+                                                // ディープ・コピーであることが確認できる
+    printf("\r\n");
+    
+    myStructA u1[] = { {3, 6}, {7, 2}, {6, 1}};
+    myStructB *u2;
+    u2 = (myStructB *)(&u1);
+
+////    myStructB u2[3];
+////    u2 = (myStructB[])((myStructB *)(&u1));
+    for (int n=0; n<3; n++)
+        printf("%d: %d, %d\r\n", n, u2[n].a1, u2[n].a2);
+}
\ No newline at end of file