C语音基础-数组12
来源:互联网 发布:淘宝部分退款如何受理 编辑:程序博客网 时间:2024/06/14 01:29
1.什么是数组
数组是相同数据类型的元素按一定顺序排列的集合
1.数组可以存储多个数据
2.数组中的元素的类型都是相同的,在数组创建的时候指定。
3.数组元素个数是一定的,在创建的时候指定。
2.数组的使用
在创建数组的时候需要确定亮点:元素类型和元素个数。
基本概念:
1).元素:数组中的每一个小空间,就叫做数组的元素.
2).下标/索引:为了区分数组中的每一个元素.C系统就为每1个元素编了1个号码.
这个号码从0开始,依次的递增.
这个号码就叫做这个元素的下标.
3).长度:指的是数组中元素的个数.也就是这个数组做多可以存储多少个数据.
arr[0] = 50;
数组的初始化
1).最傻的方式.先声明数组,然后再使用下标逐个赋值.
int arr[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
2).在声明数组的同时就初始化数组的元素.
int arr[3] = {10,20,30};
将数组的每1个元素的值依次的写在后面的大括弧之中.
int arr[3] = {10,20,30};
在编译器编译的时候.是将这个代码换成了上面那种傻代码.
int arr[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
3). 在使用第二种方式初始化的时候,可以省略数组的长度
int arr[] = {10,20,30,2,12,1,21,2,13,12,3,24,3,543,5,4,65,6,56,4,523,3,2,31,3,13,12,342,4,35,12};
4).第四种初始化方式.只为数组的前面的元素赋值.
int arr[3] = {10};
这个时候,数组的第0个元素的值是10其他的元素的值被自动初始化为0.
所以,如果我们要讲1个数组中的所有的元素初始化为0
5).第五种初始化方式.指定下标的初始化.
int arr[3] = {[1] = 10,[2] = 20};
其他的元素的值就自动的初始化为0.
数组中数据的访问
如果要取出数组中元素的值.那么就必须要确定到底要取那1个.
通过下标来确定.下标不能越界,因为越界取出的值就是别人的值
元素赋值注意事项
1).为元素赋值的时候.赋值的数据的类型要和元素的类型一致.
当赋值的数据的类型和元素的类型不一致的时候.会做自动类型转换.
2). 下标不能越界
3.数组元素的本质
元素的本质,其实就是1个普通类型的变量.所以我们为数组的元素赋值.其实也就是为1个普通类型的变量赋值.
数组之所以可以存储多个数据是因为数组中有多个元素.
数据是存储在元素中.而元素就是1个普通变量.
所以我们元素重复赋值的时候,新值干掉旧值的. 存储数据的是数组的元素,不是数组。
4.数组在内存中的存放方式
int arr[3];
1). 声明1个数组,
在内存中从高字节向低字节申请连续的(数组的长度 *每1个元素的字节数)个字节的空间.
2).下标为小的的元素在低字节.
3).元素的值存储的是数据的二进制的补码.
4).数组的元素的本质就是1个普通类型的变量.
1个数组就是由多个普通类型的变量联合而成的.
每1个元素就是1个普通变量.所以没1个元素也有自己的地址.
5 数组的地址.
1).数组的地址是数组中最低字节的地址.
2).数组的地址是数组中下标为0的元素的地址.
3).数组的地址是数组中下标为0的元素的低字节的地址.
4). 重点:
数组名就代表数组的地址.
C语言的数组名中存储的是数组的地址.
所以.我们不能直接打印数组名,这样得不到数组的元素的值,因为数组名中存储的是数组的地址.
所以我们应该使用 %p来打印数组名.
数组的地址 ==数组名 ==数组中的低字节的地址 ==数组中下标为0的元素的地址 ==数组中下标为0的元素的低字节的地址.
6 数组的长度计算.
1).数组的每一个元素的类型相同.所以数组的每一个元素占用的字节空间一样.
2).使用sizeof运算符可以计算数组总共占用的字节数.
sizeof(数组名);就可以得到这个数组占用的总的字节数.
3).得到数组占用的总的字节数以后,那么就可以用总的字节数除以每1个元素占用的字节数.
就可以得到数组的长度.
sizeof(数组名) /每1个元素的字节数.就可以得到数组的长度.
4).不建议将字节数写死.元素占用的字节数建议也是使用sizeof计算出来.因为不 同的系统不同的编译器
相同的变量可能占用的字节不一样.
sizeof(arr) / sizeof(元素类型);
sizeof(arr) / sizeof(arr[0]);
7 注意
地址传递:通过形参数组指针操作数组实际上操作的就是是实参数组.
1).当数组作为函数的参数的时候. 会丢失数组的长度.
所以,这个时候还需要1个参数让调用者将传入的数组的长度传进来.
2).当数组作为函数的参数的时候.
在函数的内部去修改这个参数数组的元素,
其实修改的就是实参数组的元素
3).强调:只有数组作为函数的参数的时候,通过sizeof才算不出来长度.
- C语音基础-数组12
- C语音基础类型
- C语音基础-枚举23
- C语音基础-typedef 24
- 讯飞C/C++语音合成基础篇
- C语音基础-指针初识15
- C语音基础-计算机内存管理20
- C语音基础与提高1
- 【c基础】数据类型---数组
- C基础之数组
- C语言基础:数组
- C语言-数组基础
- C基础:数组
- C基础:字符数组
- C语音 指针 指向一维数组元素
- 关于C语音二维数组的进一步理解
- c语音
- 基础C语音编程时常犯的错误
- 消息系统
- unity几个路径以及热更新原理
- 抛出自定义异常,spring AOP事务不回滚的解决方案
- Protocol Buffer
- 序列化和反序列化
- C语音基础-数组12
- Stream
- C++抽象编程——内存管理(1)——动态分配与内存管理
- 优化
- C++ Primer 10 关联容器
- AssetBundle
- Python基础语法
- 协方差的意义和计算公式
- (转)聚集索引和非聚集索引(整理)