数组入门
来源:互联网 发布:4g网络费流量吗 编辑:程序博客网 时间:2024/06/06 00:04
引子
关于程序员有一个这样梗,他们喜欢从0开始计数,也许这个梗是因为数组的缘故吧
上图 是一组已经申请好空间并赋好值的浮点型变量,由图可知,下标由0开始计数,需要知道的是数组在内存空间是连续存放。
连续存放有个好处是指针A与数组的配套使用,可以对数组各元素的地址,进行函数间的地址传递。
1、定义一个数组
类型 名字[大小];
eg1常见的方式:
int a[10];float b[12];double c[3];
eg2:也可以用宏定义
define N 10;int a[N];
eg3:很少见(只适用C99,慎用)
C语言中,直到C99标准出现之前,声明数组时在方括号内只能使用整数常量表达式。而C99做了很大改进,允许数组的[ ]中的值是整形变量或是整形表达式。这就解释了下面的情况:
int n;scanf ("%d", &n);int array[n];
虽然n确实是需要运行时动态确定的变量,但是在C99中,以这种变量作为数组大小的形式已经是允许的了。这样的数组就被称之为“变长数组”。
注意:变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时变化,变长数组在其生存期内的长度同样是固定的。
——来自百度百科:变长数组
eg3 打破了一般人对数组的认识,对新手而言掌握eg1、eg2就够了,知道定义一个数组大小时输入一个常量就足够了。
2、数组赋值
eg1:新手最容易接受的做法
int i;f;oat a[10];for(i=0;i<10;i++) scanf("%f",&a[i]);
eg2:进阶玩法
int a[10] = {43,2,4,23,12,5,4,34,2,1};/*也可以直接省略括号中的数字,让编译器自动匹配大小*/int a[] = {43,2,4,23,12,5,4,34,2,1}
此时数组值及空间如下
eg3:高阶玩法
任性的赋值也可以
int a[10] = {43,2,4,23,12,0,0,0,0,0};/*也可以这样子*/int a[10] = {43,2,4,23,12}//未赋值的元素自动添0
此时数组值及空间如下
对初学者而言不必过于关注高阶玩法,C99可以指定初始化项目,这里不做过多解释
三、实际应用
来一个简单选择法排序,建议在了解原理的基础上自己动手重构代码
简单选择排序一句话概括:每次选择无序数列中最小(大)的将其放在有序数列的最后(前)。
/* Note:Your choice is C IDE */#include "stdio.h"#define N 8void main(){ int a[N]={34,23,6243,123,32,41,412,43}; int i,j=0,k=0,tmp; for (i=0;i<N-1;i++) { k=i; for(j=i+1;j<N;j++) { if(a[k]>a[j]) { k=j; } } if (k!=i) // 找到一个max,并插入,。。 { tmp=a[k]; a[k]=a[i]; a[i]=tmp; } } for(i=0;i<N;i++) printf("%d ",a[i]);}
小结
1、初步认识数组
2、将数组应用于一些简单的算法
- 数组入门
- 数组入门
- excelvba数组入门浅析
- Oracle数组入门
- 树状数组 入门
- Perl入门(数组)
- poj2352树状数组入门
- 树状数组入门
- VBA数组入门
- [Java] 数组-01 入门
- java数组入门
- 后缀数组入门
- c#入门--数组
- 入门算法--数组反转
- 树状数组入门
- Java入门_数组
- Swift入门 05数组
- Java入门之数组
- TimePicker源码学习-TimePicker的结构
- java 行为型模式 模板模式
- 行为型-模板方法模式(Template Method)
- 指针
- MySQLNonTransientConnectionException: No operations allowed after co
- 数组入门
- 【mysql】window下忘记root密码 或者 提示ERROR 1045 (28000): Access denied for user 'root'@'localhost'
- 选择logback而不是log4j的理由
- 简单的九九乘法表
- 实战爬虫-五大基本模块
- 【poj1321】棋盘问题
- unity导入模型昏暗(对比度低)解决办法
- Android初识-HelloWorld
- Java设计模式--原型模式Prototype