理解 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中文网其他相关文章!