C语言第六讲,数组
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语言第六讲,数组的更多相关文章
- Apex语言(六)数组
1.数组 数组能保存多个数据,每一个数据称为数组元素,元素的个数称为数组的长度. 数组元素的类型必须相同,元素的类型就是数组的类型. 数组元素在数组中都有一个编号,称为数组下标.下标从0开始编号,通过 ...
- python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...
- C语言中的指针数组
C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的 ...
- Swift语言指南(六)--可选值
原文:Swift语言指南(六)--可选值 在值可能不存在的情况下使用可选值(optional), 可选值是: · 存在一个值,这个值等于 x 或 · 不存在任何值 注: 在 C 和 Objective ...
- C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原
C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异 ...
- 网络编程第六讲Select模型
网络模型第六讲Select模型 一丶Select模型是什么 以前我们讲过一个迭代模型.就是只服务一个客户端连接.但是实际网络编程中.复杂的很多. 比如一个 C/S架构程序 (客户端/服务端) 客户端很 ...
- MFC原理第六讲.消息传递
---恢复内容开始--- MFC原理第六讲.消息传递 一丶简介 通过上一讲我们的消息映射表.我们得知. 消息映射表 会保存父类的MessageMap 以及自己当前的消息结构体数组. 消息传递是一层一层 ...
- C语言第八讲,指针*
C语言第八讲,指针* 一丶简单理解指针 说到指针,很多人都说是C语言的重点. 也说是C语言的难点. 其实指针并不是难.而是很多人搞不清地址 和 值.以及指针类型. 为什么这样说. 假设有两个变量,如下 ...
- 内核知识第六讲,内核编写规范,以及获取GDT表
内核知识第六讲,内核编写规范,以及获取GDT表 一丶内核驱动编写规范 我们都知道,在ring3下,如果我们的程序出错了.那么就崩溃了.但是在ring0下,只要我们的程序崩溃了.那么直接就蓝屏了. 那么 ...
随机推荐
- centos7 mysql的安装与配置
用yum直接安装,不用更改配置 1. #yum install mysql #yum install mysql-server #yum install mysql-devel yum运行报错的化有可 ...
- ABP .NET corej 版本 第一篇
ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP使用以下技术: 服务器端: l ASP.NET MVC 5.Web API 2.C# 5. ...
- SPARK安装三:SPARK集群部署
使用2.3.0版本,因为公司生产环境是这个版本 一.下载安装 cd /opt wget https://archive.apache.org/dist/spark/spark-2.3.0/spark- ...
- Chapter3_操作符_算术操作符
java中的算术操作符与其它语言并无太大区别,常用到的是以下这些: (1)加号(+),减号(-),除号(\),乘号(*),取模操作符(%),其中除号需要特别注意的是,会自动截取掉小数点后面的部分,而不 ...
- 常见bat(批处理)命令的语法规则
最近由于在做cocos2d的项目,需要用到一些bat命令,在此做些记录. bat命令用txt文本编辑就行,编辑完之后将后缀名改为bat即可运行.先来一个最简单的例子: @echo off echo \ ...
- MFC设置单文档保存格式以及标题
在使用MFC编写单文档程序时,有时候需要将编辑的内容序列化为文件,使该文件可以直接以自己的程序打开,这时候需要在保存时将文件后缀改为我们想要的格式. 步骤 打开String Table,找到IDR_M ...
- Unity3D之物理射线
射线:从一个点往一个方向,发射一根无限长的射线,这根射线会与场景中带有 Collider 组件的物体发生碰撞. 射线的使用: public class Test { private void Star ...
- Programming | 中/ 英文词频统计(MATLAB实现)
一.英文词频统计 英文词频统计很简单,只需借助split断句,再统计即可. 完整MATLAB代码: function wordcount %思路:中文词频统计涉及到对"词语"的判断 ...
- MVC+EF CODE FIRST的使用
1创建标准MVC项目 2通过NuGet安装EF 3在Models文件夹中编写实体类 4创建EFDB上下文类 5在webconfig中创建连接字符串,其中name=EFDB上下文类名 6通过管理控制台执 ...
- 【spring源码分析】IOC容器初始化——查漏补缺(一)
前言:在[spring源码分析]IOC容器初始化(十一)中提到了初始化bean的三个步骤: 激活Aware方法. 后置处理器应用(before/after). 激活自定义的init方法. 这里我们就来 ...