C语言数组的简单认识

提示:初学C语言的可以简单看看。内容包括数组的创建、初始化等简单内容。


数组的简单认识

一维数组的创建与初始化

数组是一组相同类型元素的集合。数组创建的方式:

type_t arr_name[const_n];

其中:

type_t是数组元素的类型

arr_name是数组名

const_n是数组中type_t类型的元素个数,必须是常量表达式

数组空间大小在程序编译期间就已经确定,因此下面的代码错误。

int main(int argc, char* argv[])
{
    int count = 5;

    // error C2466: 不能分配常量大小为 0 的数组
    // error C2057: 应输入常量表达式
    // error C2133: “arr”: 未知的大小
    int arr[count];

    return 0;
}

上面代码中,count在运行期间才会有值5,因此编译期间编译器不知道count的值,也就无法确定arr空间的大小,编译报错。


数组在定义时就要初始化。

定义数组时指定数组的大小大小:

int arr1[4] = { 1,2,3 };     // 正常,未初始化的元素值默认为0
int arr2[4] = { 1,2,3,4 };   // 正常初始化
int arr3[4] = { 1,2,3,4,5 }; // 错误 error C2078: 初始值设定项太多

定义数组时不指定数组的大小:

int arr1[] = {};          // 错误 error C2059: 语法错误:“}”
int arr2[] = { 1,2,3,4 }; // 正常,编译器会自动计算数组的大小

一维数组下标运算与数组大小

数组通过下标引用操作符:[]来修改或者获取数组中的元素:

int arr[4] = { 1,2,3,4 };
arr[0] = 10;    // 修改数组中的元素
int a = arr[3]; // 获取数组中的元素

通过下标访问数组,数组下标是从0开始的,也就是第1个元素的下标为0,最后一个元素的下标为数组的size-1。

我们可以通过sizeof运算符来获得数组中元素的个数:用整个数组所占空间大小sizeof(arr)除以数组中一个元素所占的空间大小sizeof(arr[0])

int sz = sizeof(arr) / sizeof(arr[0]);

一维数组在内存中的存储

下面定义了数组包含4个整型元素的数组arr,并打印出数组中元素所在的地址。

int main(int argc, char* argv[])
{
    int arr[4] = { 10,20,30,40 };
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
    {
        printf("%p\r\n", &arr[i]);
    }
    return 0;
}
/* output:
0019FECC
0019FED0
0019FED4
0019FED8
*/

从输出的地址可以看出,数组arr中的4个元素在内存中是顺序存储的。

二维数组的创建与初始化

二维数组的创建如下:

int main(int argc, char* argv[])
{
    int arr1[2][4] = { 1,2,3,4,5,6,7,8 };
    int arr2[2][4] = { {1,2,3,4},5,6,7,8 };
    int arr3[2][4] = { {1,2,3,4},{5,6,7,8} };

    int arr4[2][4] = { 1,2 };
    int arr5[2][4] = { {1,2},{3,4} };

    int arr6[][4] = { {1,2},3,4,5 };
    return 0;
}

在初始化时,一种是在一个大括号内顺序初始化,另一种便是大括号内嵌套大括号初始化,显然第二种更直观。和一维数组一样,二维数组的元素按每一维顺序存储,未初始化的元素值默认为0。

必须得给二维数组的第2维赋值,因为这决定着每一维中元素的个数,如果没有指定第1位的值,编译器根据第2维的值来计算第1维的值,如上面的数组arr6

二维数组的使用

二维数组也是通过下标引用操作符来获取或者修改其元素的值:

int main(int argc, char* argv[])
{
    int arr[2][4] = { {1,2,3,4},{5,6,7,8} };
    arr[0][0] = 10;
    arr[1][3] = 80;
    return 0;
}

二维数组中每一维的元素下标也是从0开始,到该维的size-1结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shlyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值