数组的定义,一维数组,二维数组与变长数组
目录
1、数组
2、一维数组
3、二维数组
5、数组的大小
6、遍历数组
7、数组常见错误
1、数组
简介:是一种容器
<类型> 变量名称[元素数量] ( c99之前元素数量必须是整数)
int grades[100]; double weight[20]; 元素数量变量必须为整数
[下标]中从零开始数
#include <stdio.h>
int main(void)
{
// 数组的大小const int number = 10;int x;// 定义数组int count[number];int i;// 初始化数组for (i = 0; i < number; i++){count[i] = 0;}scanf_S("%d" , &x);while( x != -1){if(x >= 0 && x <= 9){// 数组参与运算count[x] ++;}scanf_S("%d" , &x);}// 遍历数组输出for (i = 0; i < number; i++){printf("%d:%d\n", i , count[i]);}return 0;
}
2、一维数组
定义:一维数组,是由数字组成的以单纯的排序结构排列的结构单一的数组,是计算机程序中最基本的数组。
当中每个元素都只带有一个下标时,称这样的数组为一维数组。(如:数组名[常量表达式] )
注:数组作为函数参数时,往往必须再用另一个参数来传入数组的大小
如下例题:找出key在数组a中的位置
key表示要寻找的数字 a要寻找的数组 length数组a的长度
如果找到,返回在a中的位置,如果找不到就返回-1
#include<stdio.h>
int search(int key, int a[],int length){int ret = -1;int i;for ( i = 0; i < length; i++){if (a[i] == key) {ret = i;break;}}return ret;
}
int main(void){int a[] = { 2,4,6,7,1,3,5,9,11,13,23,14,32, };int x;int loc;printf("请输入一个数字:");scanf_s("%d", &x);loc = search(x, a, sizeof(a) / sizeof(a[0]));if (loc!=-1){printf("%d在第%d个位置上\n", x, loc);}else{printf("%d不存在\n", x);}return 0;}
因为如果数组作为函数参数:
- 不能在[ ]中给出数组的大小
- 不能再利用sizeof来计算数组的元素个数!
3、二维数组
二维及多维数组可以看作是一维数组的多次叠加产生的。(两对[ ] [ ])
数组名[常量表达式][常量表达式]
4、变长数组
变长数组:数组大小待定的数组,C语言中结构体的最后一个元素可以是大小未知的数组,也就是所谓的0长度。
它的主要用途是为了满足需要变长度的结构体,为了解决使用数组时内存的冗余和数组的越界问题。
对于变长数组的这个特点,很容易构造出变成结构体,如缓冲区,数据包等等
5、数组的大小
sizeof给出整个数组所占据的内容大小,单位是字节
sizeof(a)/sizeof(a[0])
sizeof(a[0])给出数组中单个元素的大小,于是相除得到了数组的单元个数
这样,一旦修改数组中初始的数据,就不需要再修改遍历的代码
6、遍历数组
通常使用for循坏。
让循坏变量i从0到<数组的长度,这样循环体内最大的i正好是数组最大的有效下标。
7、数组常见错误
1.循坏结束条件是<=数组长度
2.离开循坏后,继续用i的值来做数组元素的下标!
数组的定义,一维数组,二维数组与变长数组相关推荐
- 【EasyExcel】Java读取一维及二维Excel数据并存入数组
EasyExcel是一个基于Java的.快速.简洁.解决大文件内存溢出的Excel处理工具.它能让你在不用考虑性能.内存的等因素的情况下,快速完成Excel的读.写等功能. Java基于EasyExc ...
- C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)
1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...
- 第二十一节(数组概要, 一维、二维数组的声明和使用,数组的排序,数组的查找,)...
一维数组:1:/*数组:1. 数组是一种引用类型2. 数组是一种简单的数据结构,线性的机构3. 数组是一个容器,可以用来存储其他元素,4. 数组也是可以存储任意数据类型的元素5. 数组分为:一维数组, ...
- 如何在java中创建变长数组
传统的数组创建 在java中我们都知道创建简单数组较为简单,和C很相似.如下是创建1.2.3维数组的代码. int [] array = new int[5]; int [][] array = ne ...
- 第六章 C语言数组_C语言变长数组:使用变量指明数组的长度
在<C语言的三套标准:C89.C99和C11>一节中我们讲到,目前经常使用的C语言有三个版本,分别是 C89.C99 和 C11.C89(也称 ANSI C)是较早的版本,也是最经典的版本 ...
- linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- c 语言 二维数组地址,C/C++ 关于一维或二维数组首地址表示含义
C/C++ 关于一维或二维数组首地址表示含义 发布时间:2020-06-26 10:35:21 来源:51CTO 阅读:210 作者:sonissa 这是一个经常会忘却的知识点,最近也一直在吃这方面的 ...
- c语言malloc申请三维数组,C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的
<c primer pius>第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处 ...
最新文章
- HarmonyOS UI开发 TableLayout(表格布局) 的使用
- yum 快速搭建lnmp环境
- centos 7 密码破解 rm -rf 删除恢复
- J2ME游戏开发中时钟的简单实现
- C#使用Redis集群缓存
- 如何将一棵LSM-Tree塞进NVM
- 多线程编程学习笔记——使用并发集合(三)
- 学习C++项目—— 搭建多进程网络服务框架,增加业务和日志,心跳机制
- LINUX X11剪贴板/clipboard访问C代码范例
- linux创建用户、设置密码、修改用户、删除用户:
- ipad air1 12.5.5 checkra1n 越狱+绕过ID
- POJ 3709 K-Anonymous Sequence 斜率DP
- office2003安装包下载,专业版完整版官方原版!
- 高级售后客户服务处理专员题库
- 5G学习之路——认识CU、DU
- MapReduce学习一些笔记
- 云服务器防 DDoS 攻击的几种方法策略分享
- 头条号优化 如何提高头条文章阅读量
- 数学分析 函数极限的四则运算与复合函数的性质
- 2月28日云栖精选夜读:用人工智能提升营销效率,阿里妈妈启动2018国际广告算法大赛