08. Composite Types
5233 ワード
8.1 Records (Structures)
:異質なものを縛るのに使います.
:クラスと似ていますが、継承できません.
element copper;
const double AN = 6.022e23; /* Avogadro’s number */
...
copper.name[0] = ‘C’; copper.name[1] = ‘u’;
double atoms = mass / copper.atomic_weight * AN;
name of copper
, Fortran 90: copper%name
8.1.2 Memory Layout and Its Impact
Value Model
struct S s1;
struct S s2;
s1.n.j = 0;
s2 = s1;
s2.n.j = 7;
printf("%d\n", s1.n.j); /* 0 */
Reference Model
S s1 = new S();
s1.n = new T(); // fields initialized to 0
S s2 = s1;
s2.n.j = 7;
System.out.println(s1.n.j); // prints 7
Packed
:速度が遅くなっても、最小限のスペースを消費します.
Copies and Comparisons
:
:長い場合は、ライブラリを使用してblockcapieを提供します.
memcpy()
:
memcmp()
によって比較が提供されます.不要な値を入力->失敗の可能性を増やす->予測可能な値またはコンパイラ比較のインスタンスを作成できます.
Holeのためにメモリが浪費され、複雑になります.
言語によっては、プログラマが何バイトを占めるかを決定する言語が存在する.(Ada, C, C++)
8.1.3 Variant Records (Unions)
union {
int i;
double d;
_Bool b;
};
8.2 Arrays
:均一な要素で構成されます.
mat1 : array (1..10, 1..10) of long_float;
mat2 : matrix(1..10);
double mat[10][10];
:mat[2]の場合は、参照を表します.8.2.3 Memory Layout
:最初の要素の次の要素は右に表示されますか?(row major)、下へ行きますか?(column-major)
Row-Pointer Layout
これは
8.3 Strings
:“”,“”
Reference
この問題について(08. Composite Types), 我々は、より多くの情報をここで見つけました https://velog.io/@jimin3263/08.-Composite-Typesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol