C语言——数组

C语言中的数组是一种重要的数据结构,它允许我们在程序中存储和处理一组相同类型的数据。本文将深入探讨C语言数组的各个方面,包括一维数组和二维数组的创建、初始化、使用,以及它们在内存中的存储方式。还将介绍C99中的变长数组,以便更好地理解数组的灵活性。

数组的概念

在C语言中,数组是一组具有相同数据类型的元素的集合。这些元素按照一定的顺序排列,可以通过索引来访问。数组的大小在创建时被确定,并且通常是固定的。

在这里,我们需要注意:

1.数组元素个数不能为0;

2.数组中存放的数据的类型是相同的。

一维数组的创建与初始化

创建一维数组

要创建一个一维数组,需要指定数组的数据类型和大小。例如,创建一个整数数组可以这样做:

int myArray[5];

这将创建一个包含5个整数元素的数组。

一般地,我们可以将一维数组创建的基本语法概括如下:

type arr_name[常量值];
  1. type指定数组中存放数据的类型,既可以是int,short,long,float,char等等,也可以是自定义类型;
  2. arr_name是数组名,最好使用清晰、使用有意义的单词,采用蛇形命名法(如bubble_sort)或者驼峰命名法(如bubbleSort),个人建议能用英文(如Chinese)就不用汉语拼音(如yuwen)。当然,初学者需要慢慢适应。
  3. [ ]中的常量值用来指定数组大小。

初始化一维数组

一维数组可以在创建时初始化,也可以后续逐个元素初始化。下面是两种初始化方法的示例:

int myArray[5] = {1, 2, 3, 4, 5};

或者

int myArray[5];
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
myArray[3] = 4;
myArray[4] = 5;

显然,第一种方法更为简便。

一维数组的使用

数组下标

在C语言中,数组的下标是用于访问数组元素的整数值。数组的下标从0开始,因此第一个元素的下标为0,第二个元素的下标为1,以此类推。要访问数组中的特定元素,你可以使用数组名后跟方括号,内部放置元素的下标。例如,如果有一个名为myArray的整数数组,你可以通过myArray[0]访问第一个元素,通过myArray[1]访问第二个元素,依此类推。

int myArray[5];  // 创建一个包含5个整数元素的数组
myArray[0] = 10;  // 设置第一个元素的值为10
myArray[1] = 20;  // 设置第二个元素的值为20
int x = myArray[0];  // 将第一个元素的值(10)赋给变量x
数组元素的输入

通常,你需要从用户或文件中获取数组的元素值。你可以使用scanf函数来实现从用户输入获取值,并将其存储到数组中。

int myArray[5];
for (int i = 0; i < 5; i++)
{
    printf("请输入第%d个元素的值:", i + 1);
    scanf("%d", &myArray[i]);
}

上述示例中,通过循环遍历数组的每个元素,然后使用scanf从用户输入获取值,并使用&运算符将值存储到数组元素中。

数组元素的打印输出

为了输出数组的元素,你可以使用printf函数来显示它们。同样,你需要使用循环来遍历数组的元素,并将它们逐个打印出来。

int myArray[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) 
{
    printf("myArray[%d] = %d\n", i, myArray[i]);
}

上述示例中,我们使用循环遍历数组,并使用printf来打印每个元素的值和对应的下标。

如果你想将数组的所有元素连续输出到一行,你可以按如下方式操作:

int myArray[5] = {10, 20, 30, 40, 50};
printf("myArray: ");
for (int i = 0; i < 5; i++) 
{
    printf("%d ", myArray[i]);
}
printf("\n");

这将在一行中打印出数组的所有元素值,以空格分隔。

使用sizeof计算数组元素个数

如果你想知道一维数组中的元素个数,可以使用sizeof运算符。例如:

int count = sizeof(myArray) / sizeof(myArray[0]);

这将返回数组中元素的个数,即count的值为5。

在这里我先提前提醒一下:sizeof是操作符,不是库函数哦!(我们将在下一节讲函数)

二维数组的创建与初始化

创建二维数组

要创建一个二维数组,你需要指定行数和列数。二维数组可以看作是一系列的一维数组,每个一维数组被称为一个"行",而元素则是"列"。例如,创建一个3行4列的整数二维数组可以这样做:

int my2DArray[3][4];

这将创建一个名为my2DArray的二维数组,它有3行和4列。你可以根据你的需要调整行数和列数。

初始化二维数组

二维数组可以在创建时初始化,或者在后续逐个元素进行初始化。以下是两种初始化方法的示例:

创建时初始化
int my2DArray[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

后续逐个元素初始化

int my2DArray[3][4];
my2DArray[0][0] = 1;
my2DArray[0][1] = 2;
// 以此类推...

二维数组的使用

要访问二维数组的特定元素,你需要提供两个索引:一个用于行,另一个用于列。例如,my2DArray[1][2]表示第二行第三列的元素,其值为7。你可以像这样使用二维数组来进行读取和赋值操作:

int value = my2DArray[1][2];  // 读取第二行第三列的元素值
my2DArray[0][1] = 42;  // 将第一行第二列的元素设置为42

二维数组在内存中的存储

二维数组的元素在内存中是连续存储的,它们按行存储,每一行的元素依次排列。不同行之间也是连续的。这意味着,二维数组的元素是紧密排列的,它们按照行的顺序存储在内存中。

考虑以下的二维数组:

int my2DArray[3][4];

在内存中,它会像这样排列:

[0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3]

C99中的变长数组

C99引入了变长数组的概念,允许在运行时确定数组的大小。这为数组的灵活性提供了更多的选择。例如,你可以这样创建一个变长数组:

int rows = 3;  // 行数
int cols = 4;  // 列数
int myVarLenArray[rows][cols];

在这里,数组的行数和列数是在运行时确定的,而不是在编译时。这对于需要根据运行时条件来决定数组大小的情况非常有用。

温馨提示,Visual Studio2019/2022使用MSVC编译器,不支持C99标准的变长数组。若想尝试使用变长数组,可以采用支持GCC编译器的IDE(集成开发环境)。

总之,C语言的数组是一种强大的数据结构,用于存储和操作相同类型的数据。一维数组和二维数组在创建、初始化、使用和内存存储方面有各自的特点,而C99的变长数组为我们提供了更大的灵活性。通过这篇文章,希望你对C语言中的数组有了更清晰的理解。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值