C语言不规则数组和指针

  • Post category:C

C语言不规则数组和指针的使用攻略

1. 什么是不规则数组

不规则数组也叫做多维数组,是指列数不一样的一组数组,每一行的长度可以不一样。

2. 如何声明不规则数组

不规则数组的声明方法如下所示:

数据类型数组名[行数][列数];

其中,行数和列数可以是变量或常量,也可以省略列数。

3. 如何初始化不规则数组

不规则数组的初始化方法如下所示:

数据类型 数组名[行数][列数] = {{元素 0, 元素 1, ...}, {元素 0, 元素 1, ...}, ...};

其中,每一行的长度可以不一样,行数和列数可以是变量或常量,也可以省略列数。

4. 如何访问不规则数组

不规则数组的访问方式可以使用下标和指针。

4.1 数组下标访问

使用数组下标访问不规则数组时,首先需要确定要访问的元素在哪一行,然后再确定要访问该行的哪个元素。

数据类型 数组名[行数][列数];
数组名[行下标][列下标];

4.2 指针访问

使用指针访问不规则数组时,需要先定义一个指向该数组的指针,然后通过指针计算要访问的元素的地址。

数据类型 数组名[行数][列数];
数据类型 *指针名 = &数组名[0][0];
*(指针名 + 行下标 * 列数 + 列下标);

5. 不规则数组示例1

#include <stdio.h>

int main()
{
    int a[3][4] = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
    int i, j;

    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if (a[i][j])
            {
                printf("%d ", a[i][j]);
            }
        }
        printf("\n");
    }

    return 0;
}

在该示例中,我们定义了一个3行4列的不规则数组,其中第一行有3个元素,第二行有2个元素,第三行有4个元素。我们使用嵌套循环对该不规则数组进行遍历,然后输出每个不为0的元素。

6. 不规则数组示例2

#include <stdio.h>

int main()
{
    int a[2][3][4] = {
        {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}},
        {{13, 14}, {15, 16, 17}, {18}}};
    int i, j, k;

    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 3; j++)
        {
            for (k = 0; k < 4; k++)
            {
                if (a[i][j][k])
                {
                    printf("%d ", a[i][j][k]);
                }
            }
            printf("\n");
        }
        printf("\n");
    }

    return 0;
}

在该示例中,我们定义了一个234的不规则数组,其中第一层有2个元素,第二层有3个元素,第三层有4个元素。我们使用三重嵌套循环对该不规则数组进行遍历,然后输出每个不为0的元素。需要注意的是,由于第一层元素的个数不相同,因此需要在遍历第二层和第三层时对每个元素的存在进行判断。