C/C のギザギザ配列を理解する
行の長さを変えることができるギザギザ配列の概念は、C/C では直接サポートされていません。標準 C/C と同様の機能を実現する手法があります。
次に示すように C/C でギザギザ配列を宣言しようとすると、
int jagged[][] = { {0,1}, {1,2,3} };
コンパイラーはエラーを出し、最初の次元を除くすべての次元の境界を指定する必要があることを強調します。この制限を克服するための代替アプローチは、ポインターの配列を利用することです。
ポインターの配列を使用したギザギザ配列の作成
C では、ギザギザ配列は次のように実装できます。ポインタの配列。この配列の各要素は、動的に割り当てられたサブ配列を指します。各サブ配列は独自の可変長を持ちます。
例:
int *jagged[5];
// Assign memory to each subarray
jagged[0] = malloc(sizeof(int) * 10);
jagged[1] = malloc(sizeof(int) * 3);
// Accessing elements
*jagged[0] = 0;
*(jagged[0] 1) = 1;
*jagged[1] = 1;
*(jagged[1] 1) = 2;
*(jagged[1] 2) = 3;
// Free memory after use
free(jagged[0]);
free(jagged[1]);
このメソッドを使用すると、さまざまなサイズの行を含む配列を作成し、ギザギザ配列の動作をシミュレートできます。メモリ リークを避けるために、各サブ配列のメモリは動的に割り当てられ、手動で解放される必要があることに注意することが重要です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3