数组
为什么需要数组
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
数组的分类
一维数组
怎样定义一维数组
为n个变量连续分配存储空间
所有变量数据内型必须相同
所有变量所占的字节大小必须相等
例子
int a[5];
一维数组名不代表数组中所有的元素
一维数组名代表数组第一个元素的地址
有关一维数组的操作
初始化
完全初始化
int a[5] = {1,2, 3, 4, 5};
不完全初始化,未被初始化的元素自动为零
int a[5] = {1, 2, 3};
不初始化,所有元素是垃圾值,对某个元素赋值其他还是垃圾值
int a[5];
清零 我的问题是不是可以清1 试数后可以
int a[5] = {0};
错误的写法:
int a[5];---
a[5] = {1, 2, 3, 4, 5}; --- //错误 a[5]表示的是下标
只有在定义数组的同时才可以整体赋值
其他情况下整体赋值都是错误的
在定义的时候5(如 int a[5])才表示是个数,在其他地方表示的是下标(元
素的位置)(如 a[5])
int a[5] = {1, 2, 3, 4, 5};
a[5] = 100; //error 因为没有a[5]这个元素,最打只有a[4]
int a[5] = {1, 2, 3, 4, 5};
int b[5];
如果要把a数组的值全部复制到b数组
错误的写法;
b = a; //error相等与把a[0]的地址赋值b[0]的地址会报错
因为数组的5个元素不是用a代表的是用a[0]..a[4]代表的,a代表a数组第一个元素a[0]的地址
b代表b数组第一个元素b[0]的地址
通过试数 printf("%d\n", &a[0]);// 显示地址为1244980
printf("%d\n", a); // 显示地址为1244980
1244980
正确的写法
for (i=0; i<5; ++i)
b[i] = a[i];
赋值
int a[5];
scanf("%d", &a[0]);
scanf("%d", &a[3]);
要自己写代码实现或用工具
排序
求最大/最小
倒置
查找
插入
删除
元素一定是连续分配存储空间的
为什么需要数组
为了解决大量同类型数据的存储和使用问题
为了模拟现实世界
数组的分类
一维数组
怎样定义一维数组
为n个变量连续分配存储空间
所有变量数据内型必须相同
所有变量所占的字节大小必须相等
例子
int a[5];
一维数组名不代表数组中所有的元素
一维数组名代表数组第一个元素的地址
有关一维数组的操作
初始化
完全初始化
int a[5] = {1,2, 3, 4, 5};
不完全初始化,未被初始化的元素自动为零
int a[5] = {1, 2, 3};
不初始化,所有元素是垃圾值,对某个元素赋值其他还是垃圾值
int a[5];
清零 我的问题是不是可以清1 试数后可以
int a[5] = {0};
错误的写法:
int a[5];---
a[5] = {1, 2, 3, 4, 5}; --- //错误 a[5]表示的是下标
只有在定义数组的同时才可以整体赋值
其他情况下整体赋值都是错误的
在定义的时候5(如 int a[5])才表示是个数,在其他地方表示的是下标(元
素的位置)(如 a[5])
int a[5] = {1, 2, 3, 4, 5};
a[5] = 100; //error 因为没有a[5]这个元素,最打只有a[4]
int a[5] = {1, 2, 3, 4, 5};
int b[5];
如果要把a数组的值全部复制到b数组
错误的写法;
b = a; //error相等与把a[0]的地址赋值b[0]的地址会报错
因为数组的5个元素不是用a代表的是用a[0]..a[4]代表的,a代表a数组第一个元素a[0]的地址
b代表b数组第一个元素b[0]的地址
通过试数 printf("%d\n", &a[0]);// 显示地址为1244980
printf("%d\n", a); // 显示地址为1244980
1244980
正确的写法
for (i=0; i<5; ++i)
b[i] = a[i];
赋值
int a[5];
scanf("%d", &a[0]);
scanf("%d", &a[3]);
要自己写代码实现或用工具
排序
求最大/最小
倒置
查找
插入
删除
元素一定是连续分配存储空间的