ホームページ  >  記事  >  バックエンド開発  >  C/C でギザギザ配列を実装するにはどうすればよいですか?

C/C でギザギザ配列を実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-05 15:33:02824ブラウズ

How Can We Implement Jagged Arrays in C/C  ?

C/C のジャグ配列を理解する

行の長さを変えることができるジャグ配列の概念は、C/C では直接サポートされていません。標準 C/C と同様の機能を実現する手法があります。

次に示すように C/C でギザギザ配列を宣言しようとすると、

<code class="c++">int jagged[][] = { {0,1}, {1,2,3} };</code>

コンパイラ エラーが発生し、最初の次元を除くすべての次元の境界を指定するという要件。この制限を克服するための代替アプローチは、ポインターの配列を利用することです。

ポインターの配列を使用したギザギザ配列の作成

C では、ギザギザ配列は次のように実装できます。ポインタの配列。この配列の各要素は、動的に割り当てられたサブ配列を指します。各サブ配列は、独自の可変長を持ちます。

例:

<code class="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]);</code>

このメソッドにより、次の行を持つ配列を作成できます。サイズを変えて、ギザギザの配列の動作をシミュレートします。メモリ リークを避けるために、各サブ配列のメモリは動的に割り当てられ、手動で解放される必要があることに注意することが重要です。

以上がC/C でギザギザ配列を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。