C语言从基础到进阶全面讲解数组
目录
- 1.基础知识
- 2.数组的分类
- 2.1按元素类型分类
- 2.2按维数分类
- 3.数组定义和初始化
- 3.1 一维数组
- 3.2 二维数组
- 4.数组元素的引用方法
- 5.字符数组的定义
1.基础知识
- C语言中使用数组表示多个连续的同类型的存储位置
- 使用数组表示多个连续存储位置的时候只需要一个名字,这个名字代表所有这些存储位置的整体
- 每一个存储位置有一个自己的编号,最前边的存储位置的编号是0,向后依次递增,最后一个存储位置的编号是个数减一,这个编号叫做下标
- 决不可以使用超过范围的下标
- 使用名称和下标就可以表示这组存储位置中的某一个
2.数组的分类
2.1按元素类型分类
- 字符数组:若干个字符变量的集合
- 短整型数组
- 整型数组
- 长整型数组
- 浮点型数组
- 指针数组
- 结构体数组
2.2按维数分类
- 一维数组
- 二维数组
- 多维数组
3.数组定义和初始化 【C语言从基础到进阶全面讲解数组】
3.1 一维数组
格式: 数据类型 数组名[数组元素的个数];数组名和元素个数中间没有空格
int a[10];
定义了一个名为a的数组,每个元素都是int类型,一共有10个元素 数组元素的个数在定义的时候也可以不写,但是需要初始化,如下例的b[ ]#includeint main(int argc,char *argv[]){int a[10]; int b[] = {10,20,30}; printf("sizeof(a) = %d\n",sizeof(a)); return 0; }
初始化
全部初始化
int a[5] = {1,2,3,4,5};
部分初始化,赋值不够的后面补0 int a[5] = 2;
#includeint main(){// 如果不初始化,直接使用为随机值int a[4] = {2,3,6,5}; printf("数组a的元素为:%d,%d,%d,%d\n",a[0],a[1],a[2],a[3]); int b[4] = {2,5}; printf("数组b的元素为:%d,%d,%d,%d\n",b[0],b[1],b[2],b[3]); }
文章图片
3.2 二维数组
格式: 数据类型 数组名[行的个数][列的个数]例如 int a[2][4]
解释:名为a的二维数组,每个元素都是int类型,包含两行四列元素,一共有8个元素
二维数组也是连续开辟空间,访问元素是行和列都是从0开始
分别是 a[0][0] , a[0][1]…a[1][3]
注意:二维数组的行数可以省略,列数不能省略,在初始化的时候按照如下操作
系统会根据列数自动指定行数
#includeint main(){int a[2][4]; printf("sizeof(a)=%ld %ld\n",sizeof(a),2 * 4 *sizeof(int)); // 省略行标:int b[][4] = {1,2,3,4,5}; printf("sizeof(b)= %ld\n",sizeof(b)); return 0; }
文章图片
初始化
逐行初始化:
#includeint main(){int a[2][3] = {{1,2,3},{6,6,6}}; int i = 0,j = 0; for(i = 0; i < 2; i++){for(j = 0; j < 3; j++){printf("%d,",a[i][j]); }printf("\n"); }return 0; }
文章图片
部分初始化:
#includeint main(){int a[2][3] = {{1,2},{6}}; int i = 0,j = 0; for(i = 0; i < 2; i++){for(j = 0; j < 3; j++){printf("%d,",a[i][j]); }printf("\n"); }return 0; }
文章图片
全局初始化:
#includeint main(){int a[2][3] = {1,2,3,4,5,6}; int i = 0,j = 0; for(i = 0; i < 2; i++){for(j = 0; j < 3; j++){printf("%d,",a[i][j]); }printf("\n"); }return 0; }
文章图片
4.数组元素的引用方法
一维数组:数组名[下标]上例中已经通过a[ i ][ j ]进行引用,简单易懂
二维数组:数组名[行标][列标]
5.字符数组的定义
#includeint main(){// 用字符的方式赋值char c1[] = {'c',' ','p','i','g'}; printf("c1数组为:\n"); for(int i = 0; i < 5; i++){printf("'%c',",c1[i]); }printf("\n"); // 用字符串的方式赋值,多占1个字节,用于存放结束标志 ‘\0'char c2[] = "c pig"; for(int j = 0; j < 6; j++){printf("'%c',",c2[j]); }// 二维数组字符赋值char a[][5] = {{'a','b','v','g','y'},{'a','b','v','g','y'}}; // 字符串赋值,知道为什么是6吗? 因为多了一个 '\0'char b[][6] = {"hello","world"}; // 二维数组的元素读者可自行打印练习return 0; }
文章图片
练习:定义一个字符数组,通过scanf函数输入字符串并输出结果
#includeint main(){//通过赋值”“这样的方式可以清除字符数组中的垃圾字符,让每一个元素都是 \0char ch[32] = ""; printf("请输入一个字符串:\n"); scanf("%s",ch); //数组名就是当前数组的首地址printf("ch = %s\n",ch); return 0; }
文章图片
到此这篇关于C语言从基础到进阶全面讲解数组的文章就介绍到这了,更多相关C语言数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 如何利用python读取图片属性信息
- 新消费|“急转直下”的新消费何去何从?
- 腾讯云 TStor 统一存储通过信通院首批文件存储基础能力评测
- 在c语言中new关键字的作用是,c中using关键字的作用及其用法
- 从头构筑C#知识体系|【从头构筑C#知识体系】1.9 特性
- 计算机语言|C#中using关键字的作用
- C语言实现栈的示例代码
- 防火墙基础之流量管理与控制
- 贪吃蛇 C语言
- Java基础|Java基础.Java编译过程