数据类型之数组

1、一维数组

一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维数组及多维数组可以看作是一维数组的多次叠加产生的。

1.1一维数组的定义

数组的定义格式如下:
类型标识符 数组名[常量表达式]
说明:
(1)数组名的命名规则与变量名的命名一致
(2)常量表达式表示数组元素的个数。可以是常量或符号常量,不能为变量

int a[10];        //数组a的定义是合法的
int a[n];         //若n位变量则数组a的定义是为非法的

int a[10]中,a是一维数组的数组名,该数组由10个元素,依次为a[0]~a[9]。需要注意的是,a[10]不属于这个一维数组的空间范围。

1.2一维数组的初始化

数组的初始化可以在定义的时候一并完成。格式如下:
int a[10]={1,2,3,4,5};
后面没有的元素编译器会自动补0;
特别的,若要把数组中的元素全部初始化为0,可以简写为 :int a[10]={0};

2、二维数组、多维数组

2.1二维数组

二维数组本质上是以数组作为数组元素的数组,即“数组中的数组”,二维数组又称为矩阵,行和列相等的矩阵为方阵。对称矩阵a[i][j]=a[]j[i];对角矩阵:n阶方阵主对角线外都是零元素。

2.1.1二维数组的定义

类型说明符 数组名[常量表达式][常量表达式]
int a[3][4],b[4][2];

2.1.2二维数组的初始化
int a[3][4]={1,2,3};            //编译器会把后面的元素补0;
int a[][4]={1,2,3,4,5};         //二维数组的行可以省略
int a[3][4]={0};                //统一初始化为0;
int a[3][]={1,2,3,4};          //该初始化方式错误,二位数组的列不能不填
2.2多维数组

具有两个或两个以上下标的数组,就称为多维数组。多维数组元素有多少个下标,以标识它在数组中的位置。多维数组的说明与一维数组的说明基本类似,其说明格式一般如下:
类型说明符 数组名 [常量表达式1][常量表达式2]…[常量表达式n]

3、字符数组

字符数组是指用来存放字符数据的数组。字符数组中的一个元素存放一个字符,它在内存中占用一个字节。

3.1字符数组的定义
char a[6]={'h','e','l','l','o','\0'};
char a[6]={"hello"};
char a[6]="hello";
char a[]="hello";
3.2字符串

字符串指的是以‘\0’作为结束字符的一组字符,C语言中没有字符串类型,字符串是存放在字符型数组中的。因此,当把一个字符串存入一个数组时,也把结束符‘\0’存入数组,并以此作为字符串的结束标志。
(由字符串衍生的字符串的输入输出、处理脏字符、字符串处理函数的知识点会以另一篇博客来总结)。

4、指针数组

数组元素全为指针变量的数组称为指针数组,指针数组中的元素都必须具有相同的存储类型、指向相同数据类型的指针变量。指针数组比较适合用来指向若干个字符串,使字符串处理更方便、灵活。

4.1定义

一维指针数组的定义形式为:类型名 *数组标识符[数组长度]
例:char *a[10];
a+1表示指向下一个元素。

4.2理解数组名

对于指针数组的数组名,也代表数组的起始地址。由于数组的元素已经是指针了,数组名就是数组首元素的地址,因此数组名是指针的地址,是多级指针了。
比如指针数组int *p[N];数组名p代表&p[0],p[0]是int *,则&p[0]就是 int **。若用指针存储数组的起始地址p或&p[0],可以这样用:int **q=p;

5、数组指针

数组指针,指的是数组名的指针,即数组首元素地址的指针,即指向数组的指针。

5.1数组指针的定义

例:int (*a)[10];
解析:优先级:()> [] > * ;
所以定义了一个指针指向类型为int [10]的数组,10为数组的长度,a+1时需要跨越10个int数据的长度。

总结

准备写数组的时候感觉有很多要提及的,具体落实的时候又感觉不知道从哪里写起,继续加油!!!!!!!!!!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值