5、数组
来源:互联网 发布:怎么看数据库密码 编辑:程序博客网 时间:2024/06/17 00:18
说明
- 数组:相同数据类型的成员组成的⼀组数据
- 数组元素:构成数组的数据。
- 数组下标:数组元素位置的索引
- 数组维度:数组下标的个数
分类
- 数值数组:用来存储数值
- 字符数组:用来存储字符 ‘a’,而不是“a”
- 指针数组:用来存放指针(地址)
- 结构数组:用来存放一个结构体类型
一维数组
定义
类型说明符 数组名[常量表达式]={值1,值2,…};
- 类型说明符:任一种基本数据类型或构造类型
- 数组名:自定义的数组标识符
- 常量表达式:表示数组元素的个数,也称数组的长度
注意事项:
- 数组的长度可以是常量,也可以是常量表达式,不可以是变量(在Xcode里允许,但是定义的时候不能初始化,初始化了就会报错)
//[]里面只能是常量,不能是变量int a = 3;int array2[a];//这句话不会报错,因为没有初始化int array3[a] = {12,13,14};//但是这句话会报错,提示:变量大小的对象不能初始化
- 数组的长度可以使用宏定义:#define PI 3.14
初始化
- 如果数组没有进行初始化,数组里也是有值的,但值是什么不确定 ,可能是一些垃圾值,所以我们在定义数组的时候要给他初始化
- 如果进行了部分初始化,那么数组所有元素均是有值的,没有被初始化的元素,系统默认分配为0
//代表给数组中第4个元素初始化为11,其余元素为0int a[10]={[3]=11};
- 字符数组没有初始化的元素也会被系统初始化为ASCII码值为0的字符:’\0’
数组的存储方式
- 计算机会给数组分配一块连续的存储空间
- 数组名存放的是数组的首地址,数组名是一个常量,是不允许被赋值的;从首地址开始,依次存入数组的第1个、第2个、第n个元素
- 每个元素占用相同的字节数
- 元素之间的地址是连续的
- 先定义的数组分配在高地址
- 数组每个元素地址公式:x+sizeof(int) * 下标 //x是数组首地址+每个元素所占字节数 * 该元素下标
一维数组长度计算方法
- 方法一:数组元素个数明确时,个数即数组长度
- 方法二:sizeof( 数组名 )/sizeof( 数组元素类型 ) //数组占用的总字节数/数组元素占用字节数
- 方法三:对于字符数组来说:strlen(数组名);也可以计算其长度,此长度并未计算 ‘\0’
冒泡排序
for (int i = 0; i<10-1; i++) { for (int j = 0; j<10-1-i; j++) { if (a[j]>a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } }
字符数组
用于存放字符变量的数组,属于一维数组,元素类型是char
四大函数:
- strlen():计算字符串长度,遇到’\0’结束,一个汉字占3个字节
- strcpy():字符串拷贝
- strcat():字符串拼接
- strcmp():字符串比较,比较的是字符对应的ASCII码表的值,依次进行相减, 结果为0表示相等,1(正数)代表a大,-1(负数)代表b大;alt点击查看函数详情
二维数组:双下标数组
- 二维数组定义时,可以不指定第一维的长度,但必须指定第二维的长度
- 元素个数不足,会自动补0
- 元素个数 = 下标一 * 下标2
- 下标一:行数,代表数组里的元素个数(对于一维数组来说,它内部的元素是下标一个一维数组)
int b[2][3] = {1,2,3,4,5,6}; //相当于:{{1,2,3},{4,5,6}}
字符串数组:存放字符串的数组
char 数组名[常量表达式1][常量表达式2] = {值1, 值2, …};
char strings[3][10] = {“iPhone” , “Android” , “win8” };//该数组包含三个字符串
引用:
- 访问某个字符串:数组名[第一维下标], %s
- 访问某个字符:数组名[第一维下标][第二维下标], %c
注意事项: - 字符串数组实为 字符型 二维数组
- 每个字符串长度不可超过(第二维长度-1)
- 每个字符串用数组名加一维下标表示:a[0]//代表第一个字符串
例题
多维数组:数组下标在2个以上
定义
int a[2][4][3] = {0}; //表示整形的三维数组,2层4行3列,元素个数为2*4*3 = 24个
遍历
for(int i = 0; i < 层数; i++){ for(int j = 0; j < ⾏数; j++){ for(int k = 0; k < 列数; k++){ a[ i ][ j ][ k ] = xxx; } }}
- 多维数组理论上维数可以任意
- 多维数组的元素个数 = 各维数个数乘积
- 多维数组占用内存 = 元素个数 * 单个元素所占空间
- 多维数组每多一个[常量表达式]就多一个维度,几维就对应几层循环
整形变量修饰符
改变整形变量所占存储空间
整型常量:4个字节,共占32位,损耗内存空间,因此需要节省空间
修饰符包括:
short int a=6;//此时int只占2个字节
改变一个数的符号
signed
unsigned //表示:原来最高位用作表标识一个数的正负,现在用来参与计算
计算机默认的是有符号数,无符号数用%u输出
unsigned short d = 0-1;//0-1一般用于计算某种类型最大数是多少
0 0
- 5、数组
- 5、数组
- C语言编程5 二维数组、字符串数组、多维数组
- 数组概述+数组排序+数组查找-第5天
- 5*5二维数组转一维数组
- Java基础5--数组--数组练习
- 5-对象+函数+数组note+数组详细
- Groovy Tip 5 数组
- 数组复习题-5
- spoj687后缀数组-5
- 树状数组(5)
- Lecture 5 数组(上)
- 开发随笔5 - 数组
- 4 . 5 数组初始化
- 折腾数组5
- C++5 数组
- Groovy Tip 5:数组
- 数据结构---数组(5)
- virtualbox创建com对象失败
- GestureDetector类及其用法
- 贝塞尔曲线的实现
- C#中Trim()、TrimStart()、TrimEnd()的用法
- 学Android---ToggleButton
- 5、数组
- centos7.1 docker安装(内网)
- 正则表达式30分钟入门教程
- Ubuntu下安装mysql
- C/C++文件编辑的总结
- MindMapper的使用技巧分享
- 设计模式-中介者
- Spring Security教程(3)---- 自定义登录页面
- JAVA手写含list属性的bean转换成JSON字符串