目录

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的值来做数组元素的下标!

数组的定义,一维数组,二维数组与变长数组相关推荐

  1. 【EasyExcel】Java读取一维及二维Excel数据并存入数组

    EasyExcel是一个基于Java的.快速.简洁.解决大文件内存溢出的Excel处理工具.它能让你在不用考虑性能.内存的等因素的情况下,快速完成Excel的读.写等功能. Java基于EasyExc ...

  2. C语言基础入门48篇_30_二维数组的定义与使用(二维数组的定义:type 数组名[行][列]、二维数组的初始化、二维数组的引用)

    1. 二维数组的定义 type 数组名[行][列] 2. 二维数组的初始化 2.1 全部初始化为0 char chAry[2][3] = { 0 }; 实例: #include <stdio.h ...

  3. 第二十一节(数组概要, 一维、二维数组的声明和使用,数组的排序,数组的查找,)...

    一维数组:1:/*数组:1. 数组是一种引用类型2. 数组是一种简单的数据结构,线性的机构3. 数组是一个容器,可以用来存储其他元素,4. 数组也是可以存储任意数据类型的元素5. 数组分为:一维数组, ...

  4. 如何在java中创建变长数组

    传统的数组创建 在java中我们都知道创建简单数组较为简单,和C很相似.如下是创建1.2.3维数组的代码. int [] array = new int[5]; int [][] array = ne ...

  5. 第六章 C语言数组_C语言变长数组:使用变量指明数组的长度

    在<C语言的三套标准:C89.C99和C11>一节中我们讲到,目前经常使用的C语言有三个版本,分别是 C89.C99 和 C11.C89(也称 ANSI C)是较早的版本,也是最经典的版本 ...

  6. linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...

    c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...

  7. c 语言 二维数组地址,C/C++ 关于一维或二维数组首地址表示含义

    C/C++ 关于一维或二维数组首地址表示含义 发布时间:2020-06-26 10:35:21 来源:51CTO 阅读:210 作者:sonissa 这是一个经常会忘却的知识点,最近也一直在吃这方面的 ...

  8. c语言malloc申请三维数组,C语言malloc函数为一维,二维,三维数组分配空间

    c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...

  9. 《c primer pius》第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处理一维数组的

    <c primer pius>第十章第6题,编写一个程序,初始化一个二维double数组,并利用练习2中的任一函数来把这个数组复制到另一个二维数组(因为二维数组是数组的数组,所以可以使用处 ...

最新文章

  1. HarmonyOS UI开发 TableLayout(表格布局) 的使用
  2. yum 快速搭建lnmp环境
  3. centos 7 密码破解 rm -rf 删除恢复
  4. J2ME游戏开发中时钟的简单实现
  5. C#使用Redis集群缓存
  6. 如何将一棵LSM-Tree塞进NVM
  7. 多线程编程学习笔记——使用并发集合(三)
  8. 学习C++项目—— 搭建多进程网络服务框架,增加业务和日志,心跳机制
  9. LINUX X11剪贴板/clipboard访问C代码范例
  10. linux创建用户、设置密码、修改用户、删除用户:
  11. ipad air1 12.5.5 checkra1n 越狱+绕过ID
  12. POJ 3709 K-Anonymous Sequence 斜率DP
  13. office2003安装包下载,专业版完整版官方原版!
  14. 高级售后客户服务处理专员题库
  15. 5G学习之路——认识CU、DU
  16. MapReduce学习一些笔记
  17. 云服务器防 DDoS 攻击的几种方法策略分享
  18. 头条号优化 如何提高头条文章阅读量
  19. 数学分析 函数极限的四则运算与复合函数的性质
  20. 2月28日云栖精选夜读:用人工智能提升营销效率,阿里妈妈启动2018国际广告算法大赛

热门文章

  1. 访问Oracle数据库的四款工具软件介绍
  2. PROCESS_INFORMATION
  3. 前后端分离开发下的权限管控 :SpringSecurity 框架
  4. 区间dp(含模板及例题)
  5. 华为 ensp 部分查询方法
  6. MySQL遍历map_遍历Map的四种方法
  7. MySQL 8.0如何配置my.cnf
  8. 利用Python进行数据分析笔记-pandas建模(Patsy篇)
  9. DCloud之Android原生工程配置
  10. 如何在网页端登录企业邮箱修改密码?