最初の部分、弦。
多くの人が言ったように、文字列を表す方法はたくさんあります。最も一般的な方法は、文字列を配列として格納することです。ただし、この配列の長さという追加情報が必要です。
各 (手続き型または命令型) 言語は、この問題を異なる方法で解決します。
配列の最初の数バイトに文字列の長さが格納される「パスカル文字列」があります。
長さを格納するための追加のバイトがない「C 文字列またはヌル終了文字列」がありますが、配列の最後のバイトの値はゼロです。
COM では、BSTR というハイブリッド アプローチが使用されます。最初に 4 バイトを使用して文字列の長さを格納し、最後に 2 バイトのマーカー (2 つのゼロ バイト) を格納します。文字列を C プロシージャに渡すと同時に、長さをすばやく取得できます。
関数型言語は、まったく別のストアです。
2番目の部分、マトリックス。
多次元 (この場合は 2 次元) 配列を格納するには、それを「線形化」する必要があります。つまり、コンピューターのメモリ ハードウェアを使用するために、1 次元配列に変換する必要があります。
だから保存するには
float A[W][H];
少なくとも割り当てます
sizeof(float)*W*H
データを格納するためのメモリのバイト。A[i][j] へのアクセスは、アドレスのメモリ バイトにアクセスすることによって行われます。
addr(A) + (i * H + j)
または住所
addr(A) + (j * W + i)
これらは、C と Fortran で採用されている 2 つのアプローチです。
ただし、疎行列を保存する必要がある場合は、他のオプションがいくつかあるかもしれません。たとえば、行列のゼロ以外の要素を表すトリプル (i,j,value) を格納できます。