先决条件: C语言中的数组
锯齿状数组是数组,这样成员数组可以具有不同的大小,即,我们可以创建一个2-D数组,但是每行中的列数是可变的。这些类型的数组也称为锯齿状数组。
例子:
arr[][] = { {0, 1, 2},
{6, 4},
{1, 7, 6, 8, 9},
{5}
};
以下是在C语言中实现锯齿状数组的方法:
- 使用数组和指针(静态锯齿数组)
- 首先用所需行数声明一维数组,
- 每个数组(行中元素的数组)的大小将是行中列(或元素)的数量,
- 然后声明一维指针数组,该数组将保存行的地址,
- 一维数组的大小是所需的锯齿状数组中的行数。
下面是上述方法的实现:
例子:// C program to show the // implementation of Jagged Arrays #include
#include int main() { int row0[4] = { 1, 2, 3, 4 }; int row1[2] = { 5, 6 }; int* jagged[2] = { row0, row1 }; // Array to hold the size of each row int Size[2] = { 4, 2 }, k = 0; // To display elements of Jagged array for (int i = 0; i < 2; i++) { // pointer to hold the address of the row int* ptr = jagged[i]; for (int j = 0; j < Size[k]; j++) { printf("%d ", *ptr); // move the pointer to the // next element in the row ptr++; } printf("\n"); k++; // move the pointer to the next row jagged[i]++; } return 0; } 输出:1 2 3 4 5 6
- 使用指针数组(动态锯齿数组)
- 声明一个指针数组(锯齿数组),
- 此数组的大小将为锯齿状数组中所需的行数
- 然后,为数组中的每个指针分配所需的内存,以供您在此行中使用。
下面是上述方法的实现:
例子:// C program to show the // implementation of Jagged Arrays #include
#include int main() { // 2 Rows int* jagged[2]; // Allocate memory for elements in row 0 jagged[0] = malloc(sizeof(int) * 1); // Allocate memory for elements in row 1 jagged[1] = malloc(sizeof(int) * 3); // Array to hold the size of each row int Size[2] = { 1, 3 }, k = 0, number = 100; // User enters the numbers for (int i = 0; i < 2; i++) { int* p = jagged[i]; for (int j = 0; j < Size[k]; j++) { *p = number++; // move the pointer p++; } k++; } k = 0; // Display elements in Jagged array for (int i = 0; i < 2; i++) { int* p = jagged[i]; for (int j = 0; j < Size[k]; j++) { printf("%d ", *p); // move the pointer to the next element p++; } printf("\n"); k++; // move the pointer to the next row jagged[i]++; } return 0; } 输出:100 101 102 103
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。