标签:ons src 区别 没有 其它 size 个数 安全 alt
定义一维数组的语法:
datatype arrayName ;
数据类型 数组名 [ ] ;
引入一个新的定义方式
宏定义
第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;
第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,因为:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误 );
第三种是定义"函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数(这种方法存在一些弊病,如get_max(a++, b)时,a++会被执行多少次取决于a和b的大小!所以建议还是用内联函数而不是这种方法提高速度。虽然有这样的弊病,但这种方法的确非常灵活,因为a和b可以是各种数据类型。)
代表N作为一个常量
关于#define 详细使用方法
https://blog.csdn.net/king110108/article/details/80728010
对于#define 和 const 定义两种的区别
1,define表示宏定义,这个N可以是其它类型
先定义,在使用时编译器转化成相应类型
2,const在定义时就有固定类型
所以define在用的时候可能会有风险
不仅仅类型不同,编译的处理方式也不同,还有存储方式也是不同的
———————————————————————————————————
一维数组初始化:
此时符合:后面的元素个数和声明的一致
这时明显不够12个——但却仍正确,后面5个元素没有初始化,默认值为0
正确——元素个数为2
注:这时元素个数固定为2了,如果在想赋第三个值时会报错,因为数组个数时固定的
错误:未知元素个数
int array[ ] = { } ;
———————————————————————————————————
一维数组的动态赋值
动态地从键盘录入信息并赋值
小结:
使用数组的步骤是什么?
1,定义数组是什么类型
2,数组的大小
3,考虑如何给数组每个元素进行赋值
4,录入值之后操作数组,一般采取循环
——————————————————————————————————
一维数组实战
有一个数列:8,4,2,1,23,344,12
1,循环输出数列的值
2,求数列中所有的数值的和及平均值
3,猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
也可以通过定义一个不相关的变量,通过在for循环中改变其值再来观察
循环是否正常退出
————————————————————————————————
数组的排序
循环录入5个整形数字,进行降序排列后输出结果
方案:使用冒泡排序
16 25 9 90 23
降序排列 - 从大到小
冒泡排序的基础原理: 遍历 和 交换
第一轮循环
某个数字小于后面的数字,那么就交换第1轮 25 16 9 90 23 16 和 25作比较,25 > 16 放在左边
第2轮 25 16 9 90 23 16 和 9作比较,16 > 9 所以不变第3轮 25 16 90 9 23 冒泡已经冒到 9,
第4轮 25 16 90 23 9 9 和 23 作比较 交换位置
最小的数字就冒到了最后
特点 :
1,需要比较多轮 - > ( 共需要比较数组长度 - 1 )轮
2,每一轮比较的次数比上一轮 - 1次
( 数组长度 - 1) - 当前的轮数
例如:这个数组长度是 5
共需要比较 4 轮
第1轮 需要比较 4 次
在数组已经有序的情况下
逆序可以重复采用冒泡排序的方式
如果数组初始无序的情况下,要求数组逆序输出
逆序:
第一个元素和最后一个元素交换
第二个元素和倒数第二个元素交换
12 34 23 67 9
i N - i -1
i N - i - 1
for( i = 0 ;i < N ; i++)
{
temp = nums [ i ];
nums[ i ] = nums [ N - i - 1];
nums [N - i - 1] = temp;
}
但是执行发现数组并没有变化
正确代码如下:
————————————————————————————————
数组的增删改查
数组删除的逻辑
12 34 23 67 9
1,查找要删除数字的下标(如23——>2)
2,从下标开始,后面一个覆盖前面一个数字
变成 12 34 23 9 9
3,数组的总长度 - 1
数组的增加
C语言一维数组分静态一维数组和动态一维数组两种
一、静态一维数组,在定义的时候就已经确定其长度。如
int a[10];
就是定义了一个长度为10个元素的整型数组。
静态数组不支持长度的增加。如果要增加长度,只能新定义一个更长的数组,并把原始数组的数据复制到新数组中。
二、动态一维数组,本质上是一个一维指针,并在其上分配一段内存,在这段内存上,可以当做数组来使用。
这种情况下,可以通过realloc函数,来实现增加长度。
int *p; //定义指针
p = malloc(10*sizeof(int));//分配10个元素。
p = realloc(p,20*sizeof(int));//重新分配,长度增加到20. 使用该函数,可以保持原本空间内的数据不变,只是可用空间增加。
如果删除数组当中的一个元素之后,是可以进行再次增加的,将覆盖掉的元素直接等价于要增加的元素即可
老九学堂会员社群出品
作者:zero
标签:ons src 区别 没有 其它 size 个数 安全 alt
原文地址:https://www.cnblogs.com/ljxt/p/11579176.html