C语言第六讲,数组

一丶什么是数组

数组,就是一整块的连续内存空间.

且类型都是一样的.大小一样

比如:

  

1.1数组元素的访问

我们要访问数组,例如上面,我们访问元算2,元素3等等怎么访问..

比如有一个数组为:

  

int Arry[] = {,,};   //数组定义初始化.
Arry[] = ;
Arry[] = ; //数组的访问
......

利用下标来进行访问.

利用程序来进行访问

   int Ary[] = {  };
for (int i = ; i < ; i++)
{
printf("%d\r\n",i);
}

动态的大小识别.

  int Ary[] = {  };
for (int i = ; i < sizeof(Ary)/sizeof(Ary[]); i++)
{
printf("%d\r\n",i);
}

这里用到了一个关键字,Sizeof, sizeof关键字是求大小的关键字. 例如我们求数组的总大小. 然后 利用总大小 除以数组元素个数的大小. 就得出来了数组的个数.

1.2一维数组的声明

在C语言中,或者C++语言中,我们要声明数组. 不用考虑在哪里开辟,开辟多大的问题,只需要你给我一个大小.我编译器自动的来进行开辟内存空间供你使用.

类型 数组名[数组元素的个数]
例如:
int Ary[]; //定义一个Ary的数组,有3个元素.

注意,声明的时候是个数.也就是说数组有3个元素.  但是访问的时候是下表.从0开始访问

例如:

  

ary[] = ;
ary[] = ;
ary[] = ; 总共有三个.

声明的时候则是告诉编译器, 我声明的类型是 int类型,数组名字数Ary,个数是3个. 那么这个数组所占的内存空间则是  3 * 4 = 12个字节大小.

公式计算:

  3(数组元素个数) * 类型  = 内存空间所占大小.

1.3数组应该注意的问题.

在C语言中,数组的声明不支持动态声明.

什么意思?

  也就是说,你需要给定我个数.我来进行申请.但是你不能把这个个数给一个变量保存.让我跟随变量来申请.

例如:

  

int nCount = ;
int Ary[nCount]; //错误的

数组的定义可以和普通成员变量的定义放在一起.

例如:

  

int A, ary[],b;

二丶数组初始化

上面我们虽然定义了数组.但是并没有仔细讲解数组的初始化

数组的初始化常用的有三种.

第一种, 大括号初始化.

int Ary[] = { ,  ,}; //数组中的元素1,元素2,元素三分别初始化为了1,2,3

第二种.全部初始化.

int Ary[] = {}; //数组的每个元素全部初始化为了0

第三种,不确定个数的初始化.

int Ary[] = { , , } ;//有的时候你并不知道你的数组有多大. 但是又不用动态的申请空间.
所以这样写会默认有3个元素.

三丶二维数组和高维数组

有的时候一维数组并不能满足我们的需求.

这个是否就需要更高维的数组了.

例如:

  

int Ary[][];  定义二维数组

这样则声明了一个二维数组. 代表我们申请了 2行 2列的数组. 大小是 2*2的矩阵.

这几个元素分别是:

  

Ary[][] Ary[][]
Ary[][] Ary[][]

二维数组的定义初始化.

int nNum[][] = {{,},{,}}; 使用两个括号即可.

二维数组对部分元素进行初始化.

int nNum[][] = {{},{}};

二维数组的访问

二维数组本质是一维数组.但是为了理解.所以说成是二维数组.

我们利用程序来对其进行访问.

二维数组初始化

    int Ary[][] = {};
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
Ary[i][j] = i + j; //重要语句. i是行,j是列
}
}
二维数组输出
for (int i = ; i < ; i++ )
{
for (int j = ; j < ; j++)
{
printf(" %d", Ary[i][j]);
}
puts("\r\n");
}

输出结果.

高维数组则一样,不过一般用不到高维数组.

C语言第六讲,数组的更多相关文章

  1. Apex语言(六)数组

    1.数组 数组能保存多个数据,每一个数据称为数组元素,元素的个数称为数组的长度. 数组元素的类型必须相同,元素的类型就是数组的类型. 数组元素在数组中都有一个编号,称为数组下标.下标从0开始编号,通过 ...

  2. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  3. C语言中的指针数组

    C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的 ...

  4. Swift语言指南(六)--可选值

    原文:Swift语言指南(六)--可选值 在值可能不存在的情况下使用可选值(optional), 可选值是: · 存在一个值,这个值等于 x 或 · 不存在任何值 注: 在 C 和 Objective ...

  5. C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原

    C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异 ...

  6. 网络编程第六讲Select模型

    网络模型第六讲Select模型 一丶Select模型是什么 以前我们讲过一个迭代模型.就是只服务一个客户端连接.但是实际网络编程中.复杂的很多. 比如一个 C/S架构程序 (客户端/服务端) 客户端很 ...

  7. MFC原理第六讲.消息传递

    ---恢复内容开始--- MFC原理第六讲.消息传递 一丶简介 通过上一讲我们的消息映射表.我们得知. 消息映射表 会保存父类的MessageMap 以及自己当前的消息结构体数组. 消息传递是一层一层 ...

  8. C语言第八讲,指针*

    C语言第八讲,指针* 一丶简单理解指针 说到指针,很多人都说是C语言的重点. 也说是C语言的难点. 其实指针并不是难.而是很多人搞不清地址 和 值.以及指针类型. 为什么这样说. 假设有两个变量,如下 ...

  9. 内核知识第六讲,内核编写规范,以及获取GDT表

    内核知识第六讲,内核编写规范,以及获取GDT表 一丶内核驱动编写规范 我们都知道,在ring3下,如果我们的程序出错了.那么就崩溃了.但是在ring0下,只要我们的程序崩溃了.那么直接就蓝屏了. 那么 ...

随机推荐

  1. idea打包含第三方依赖的jar包

    1.打开idea,打开java项目,选择file-->Project Structure,添加依赖的jar包 2.配置artfacts 点击ok,不需要做任何操作 点击jar,右键新建一个lib ...

  2. 15. pk-mext

    在平时的生产环境中,我们经常会碰到监控MySQL的各个状态值的一个变化趋势,然后就会自己写个脚本,将status快照保存到文本中.当我们去分析的时候,需要自己去比较差值,是一件比较麻烦的时候,虽然可以 ...

  3. Nginx学习笔记(反向代理&搭建集群)

    一.前言 1.1 大型互联网架构演变历程 1.1.1 淘宝技术 淘宝的核心技术(国内乃至国际的 Top,这还是2011年的数据) 拥有全国最大的分布式 Hadoop 集群(云梯,2000左右节点,24 ...

  4. 一不注意,在Unity3D中DllImport 引起的Bug.

    单要说这个Bug是很简单,但是得从头说起. 一些大型的网络游戏,或者加载比较多的一些场景时,如果要等待所有模型,贴图等各种资源文件加载完毕才能执行游戏,对用户将会是一个很头大的事情.所以就需要用到动态 ...

  5. # 2019-2020.3 《java程序设计》第一周学习总结

    2019-2020-3 <Java 程序设计>第一周学习总结 在本周的学习中,学习到了好多也收获了好多,从最基础的安装虚拟机开始,根据老师的博客中的教程一步一步的进行,在这过程中也遇到了好 ...

  6. 工具SQL

    1.数据库设计文档维护SQL SELECT COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, ...

  7. 知名公司的GitHub地址

    GoogleGoogle[https://github.com/google]( https://github.com/google) Google Sampleshttps://github.com ...

  8. Reading | 《Linux就该这么学》

    目录 一.前言 1.Linux概念 2.RPM(红帽软件包管理器) 3.Yum软件仓库 二.常用Linux命令 1.Shell 2.命令基本格式和man命令 3.常用系统工作命令 echo命令 dat ...

  9. noi2015品酒大会(sa)

    用常用的套路,排序之后从大到小插入height,用并查集维护即可. #include<iostream> #include<cstring> #include<cstdi ...

  10. Redis 学习笔记(十二)Redis 复制功能详解 ----- (error) READONLY You can't write against a read only slave

    Redis 复制(Replication)1. 复制介绍分布式数据库为了获取更大的存储容量和更高的并发访问量,会将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上.Redis为了解决 ...