本文主要是介绍iOS笔记:第七篇 C语言 数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一节 数 组
1. 数组
作用:用来存储多个数据.
数组与普通变量的区别:
1)数组可以存储多个数据,普通变量只能存储一个数据
2)数组中的多个数据共存,普通变量只能有一个.
数组的特点:
1)存储多个数据
2)存储的多个数据的类型必须要相同.这个类型在创建数组的时候指定.
3)数组的长度固定.数组可以存储的数据的个数是固定的.
在创建数组的时候就要指定这个数组到底能存储多少个数据.
一旦指定,无法更改.
4)存储在数组中的数据非常方便管理.
数组其实就是用来存储一组数据.
2. 如何去创建1个用于存储多个数据的数组.
1).在创建数组之前要确定的事情
-> 数组之中能够存储那些类型的数据.
-> 数组之中要存储多少个数据.
2).语法:
数组之中存储的数据的类型数组名称[数组之中能够存储的数据的个数];
array: 数组.
int arr[3];
表示.创建了1个数组.数组的名字叫做arr.这个数组可以存储3个数据,每1个数据的类型要求都是int类型的.
3).数组是用来存储多个数据.既然是来存储数据的那么就必须要在内存中开辟空间.
划分为多少个小空间是根据声明数组的时候,中括弧中的数字来决定的.每一个小空间的类型是根据声明数组的时候,指定的每一个数据的类型来决定的.这些小空间就是用来存储数据的.
4).专业的术语
元素:数组之中用来存储数据的每一个小空间就叫做数组的元素.
下标/索引:为了区分数组中的每一个元素.C就为每一个元素编了一个号码这个号码从0开始依次的递增.这个号码就叫做元素的下标.
数组的长度:数组之中能存储多少个数据.
3. 如何往数组之中存储数据.
1). 数组之中存储数据的是数组的元素.我们应该将数据赋值给数组的元素而不数组.
int arr[3];
arr = 10; 这么写是错误的.因为真正存储数据的是数组之中的元素.
2). 我们往数组之中存储数据,实际上应该将数据赋值给数组之中的元素.
数组之中有很多个元素,通过数组的下标来确定.
语法:数组名[下标] = 数据;
arr[0] = 10; 把10这个数据赋值给arr数组之中的下标为0的元素.
注意: arr[0]指的是 arr数组中下标为0的元素.
3). 注意:
1)如果为元素赋的值的类型和元素的类型不一致,这个时候就会做类型转换.
2)下标越界的问题.就是访问数组的元素的时候注意下标不要超过范围.
数组的下标的范围: 0 ->长度-1
4. 如何将数组中的数据取出来.
1). 数组中有很多个元素,通过下标来确定.
数组名[元素的下标];
2). 取值的时候也要注意下标越界问题,如果下标越界了,取出来的值就是一个垃圾值.
5.数组的遍历
遍历的原理:将数组的元素的每1个下标遍历出来.
0 --> 长度-1将这个范围中的每1个整数遍历出来
当做数组的下标取出.
for(int i = 0; i < 数组的长度; i++)
{
arr[i] 就可以拿到每1个元素的值;
}
6. 数组要注意的细节问题
1).数组的声明.
元素的类型数组名[数组的长度];
指定长度的时候不能是负数但是可以是0但是没有意义.
数组的长度可以用变量.
数组的长度也可以用1个表达式.
2).数组的初始化
->. 如果我们声明一个数组,没有为数组的元素赋值,那么数组的元素的值一个垃圾值.
-> 声明数组的元素的同时就为数组的元素赋值.
int arr[5] = {10,20,30,40,50};
在大括弧中的数据会依次的赋值给每一个元素.
但是在给值的时候,数据的个数不要超过元素的个数.
int arr[] = {10,20,30,40,60,70}
数组的个数根据后面给的数据的个数来定
算数组的长度:数组占用的字节数 / 每1个元素占用的字节数.
int arr[5] = {1,2};
后面值给1个数据.按照顺序赋值给每1个元素.如果没有初始化的元素就自动的初始化为0.
只要有1个元素被初始化了那么其他的元素就被自动初始化为0.
也可以指定初始化数据为那个元素.没有指定初始化的元素自动初始化为0.
第二节 数组的存储
1. 变量在内存中如何存储的.
1). 内存中存储数据的最小基本单位是字节.1个字节由8个二进制位组成.
并且每1个字节在内存之中都有1个独一无二的地址.
2).声明1个变量实际上就是在内存中申请指定个数字节的空间用来存储数据.
int num; 4 float 4
double 8 char 1
3). 为变量申请字节空间的时候,是由高地址向低地址申请的.
先声明的变量在高地址.后声明的变量在低地址.
4). 变量中的数据都是数据的补码二进制形式存储的.
低位存储在低字节.高位存储在高字节.
5). 变量的地址
是变量中首字节的地址.
6). 如何取出变量的地址.
&取地址符. %p
2. 数组在内存中是如何存储的.
a. 数组其实就是在内存中申请连续的空间用来存储数据.
int arr[3]; 在内存之中申请3个连续的int类型的空间.
b.数组的第0个元素是低字节的那个变量.
c.为每1个元素赋值的时候.是将数据的补码存储在对应的字节之中.
3. 数组的长度的计算方法.
数组占用的字节数: 数组中所有的元素占用的字节数.
元素占用的字节数: 每1个元素占用的字节数.
如何计算数组中元素的个数: 数组占用的字节数 / 每1个元素占用的字节数.
sizeof(数组) / sizeof(元素类型);
4. 数组的地址问题.
数组的地址是下标为0的元素的地址.
而数组的第0个元素的地址是第0个元素的低字节的地址.
数组名中存储的是数组的地址.
5. 元素的地址
拿到数组的元素的地址.
数组的元素的本质是变量.
通过取地址符来拿到.
&arr[0];
如果要通过scanf为数组的元素赋值.要取到元素的地址传入
int arr[3] = {10,20,30};
arr 数组名种存储的是数组的地址.
数组的地址是:第0个元素的地址也就是第0个元素的低字节的地址.
arr[0]; 这个是拿到下标为0的元素的值.
&arr[0]; 这个是拿到下标为0的元素的地址,也就是数组的地址.
数组名 == 数组的地址 == 下标为0的元素的地址 ==下标为0的元素的低字节的地址
4. 数组越界
a. 当访问数组中不存在的元素的时候,运行会报错.
b. 取值的时候,下标如果越界了,那么取到的值是一个垃圾值.
c. 越界访问的时候编译器是允许的.但是不要这么做.
因为当越界访问的时候,访问到的不是数组的元素了,极度有可能你访问到的空间是被系统占用的,也有可能是别的程序占用的.越界访问很危险
第三节排序
1、 选择排序
2.冒泡排序:
这篇关于iOS笔记:第七篇 C语言 数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!