C语言-数组
2020-12-13 15:22
标签: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
{ 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 C语言-数组 标签:ons src 区别 没有 其它 size 个数 安全 alt 原文地址:https://www.cnblogs.com/ljxt/p/11579176.html