数组

在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来——称为数组。

数组就是在内存中连续的相同类型的变量空间。同一个数组所有的成员都是相同的数据类型,同时所有的成员在内存中的地址是连续的。

数组属于构造数据类型:一个数组可以分解为多个数组元素:这些数组元素可以是基本数据类型或构造类型。

按数组元素类型的不同,数组可分为:数值数组、字符数组、指针数组、结构数组等类别。

通常情况下,数组元素下标的个数也称为维数,根据维数的不同,可将数组分为一维数组、二维数组、三维数组、四维数组等。通常情况下,我们将二维及以上的数组称为多维数组。

一维数组

定义一维数组

定义数组时[]内最好是常量,使用数组时[]内即可是常量,也可以是变量

在定义数组的同时进行赋值,称为初始化。全局数组若不初始化,编译器将其初始化为零。局部数组若不初始化,内容为随机值。

int a[5]; // 定义一个有5个元素的一位数组
int a[5] = {1,2,3,4,5}; // 定义数组并初始化
int a[] = {1,2,3,4,5}; // 如果定义并初始化,可以不给出数组大小,编译器会自动推断
int a[5] = {1,2,3}; // 如果初始化只给出一部分,则其余部分默认为0
int a[5] = {0}; // 所有元素初始化为0

二维数组

二维数组在概念上是二维的:其下标在两个方向上变化,对其访问一般需要两个下标

在内存中并不存在二维数组,二维数组实际的硬件存储器是连续编址的,也就是说内存中只有一维数组,即放完一行之后顺次放入第二行,和一维数组存放方式是一样的。

定义二维数组

类型说明符 数组名[常量表达式1][常量表达式2]:其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。

int a[3][4]; // 定义一个3行4列的二维数组
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; // 定义并初始化,第一行完了接着第二行
int a[3][4] = {1,2,3}; // 和一维一样,没有初始化的设置为0
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; // 定义并初始化,详细指定了初始化的行数
int a[3][4] = {{1,2,3}, {5,6}, {9}}; // 对每一行来说,没有初始化的设置为0
int a[3][4] = {0}; // 整个二维数组设置为0

数组的使用

数组名是一个地址的常量,代表数组中首元素的地址,而数组使用时后面方括号里的数字代表着偏移量

所以数组第一个元素的偏移量为0,第n个元素的偏移量为 n-1

数组使用时要注意不要超过数组的长度,否则会引发 数组越界 的问题,在C语言中,这并不会报错,但经常会导致莫名其妙的结果

C:数组基础的更多相关文章

  1. Java 数组基础

    数组 数组(Array):相同类型数据的集合. 定义数组 方式1(推荐,更能表明数组类型) type[] 变量名 = new type[数组中元素的个数]; 比如: int[] a = new int ...

  2. Java 数组基础,java.util.Arrays

    定义数组 方式1(推荐,更能表明数组类型) 方式2(同C语言) 方式3定义时直接初始化 数组运用基础 数组长度 equals() 数组元素不为基本数据类型时 二维数组 二维数组基础 变长的二维数组 j ...

  3. PHP 数组基础知识

    php 数组基础知识function abc($a,$b,$c = 0){ echo $a,$b,$c;}abc(1,3); //调用方法 ////可变参数function def(){ $arr = ...

  4. 1.2 NumPy数组基础

    目录 第一章 numpy入门 1.2 numpy数组基础 1.2.1 数组的属性 1.2.2 数组的索引:获取单个元素 1.2.3 数组切片:获取子数组 1.2.4 数组的变形 1.2.5 数组的拼接 ...

  5. js数组基础整理

    首页: 主要整理了一下数组中常用的一些基础知识,代码都是自己手敲,有不对的地方希望能指出,目前只有4篇,后续会不断的增加这一板块. 由于少于100字不能发所以把一些最基本的创建数组也写上. // 创建 ...

  6. JavaScript数组基础编程题归纳

    之前的随笔"JavaScript中数组类型的属性和方法"中有介绍很多数组类型的方法,但都是一些理论.最近在练习在线编程题,发现自己还是习惯于用常规的循环来答题,对于数组的方法的使用 ...

  7. java数组基础

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. C# 数组基础

    一.数组的基础知识 1.数组有什么用? 如果需要同一个类型的多个对象,就可以使用数组.数组是一种数组结构,它可以包含同一个类型的多个元素. 2.数组的初始化方式 第一种:先声明后赋值 ]; array ...

  9. java数组基础知识

    数组的定义:int[] array=new array[n];int array[]={, , , ,};定义了数组,JVM就会给其一个空间,数组是应用类型的数据类型,其存储方式是随机存储. 数组的遍 ...

  10. Array数组基础

    数组的定义 数组(array)是按次序排列的一组值,单个值称为元素,它们的位置都有编号(从0开始).整个数组用方括号表示. var arr = ['a', 'b', 'c']; 上面代码中的a.b.c ...

随机推荐

  1. 【HTML】三种方法使HTML单页面输入密码才能访问

    方法一 <script type="text/javascript"> function password() { var testV = 1; var pass1 = ...

  2. ET框架之SceneChangeComponent

    初始化事件 using ETModel; namespace ETHotfix { [Event(EventIdType.InitSceneStart)] public class InitScene ...

  3. Linux安装MATLAB2016a

    一.准备工具 matlab2016a的镜像文件和破解文件(链接: https://pan.baidu.com/s/1cxtlOM 密码: cj2u) Linux系统,我用的是deepin15.4,和一 ...

  4. BeautifulSoup的基本使用

    一.将一段文档传入BeautifulSoup的构造方法,得到一个文档的对象: from bs4 import BeautifulSoup Soup = BeautifulSoup(html_doc) ...

  5. spring(一):思维导图

  6. HTML的网页基本结构

    写在前面 <!DOCTYPE html><html lang="en"><head>            <meta charset=& ...

  7. 16day 重定向符号:

    >/1> 标准输出重定向符号 2> 错误输出重定向符号 >>/1> 标准输出追加重定向符号 2>> 错误输出追加重定向符号 如何将正确信息和错误信息都输 ...

  8. 初篇——目录(JavaMail)

    结构图 目录 邮件的知识体系由三部分组成,邮箱服务器,邮件程序,邮件协议. 邮箱服务器一般都是由公司的网络工程师搭建完成,基本上与程序员没有关系.但是笔者还是亲自尝试,使用Apache James搭建 ...

  9. 解决linux 中文乱码

    解决办法是在文件/etc/profile末尾添加一行 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source ...

  10. 搭建FEBS权限系统

    在码云看到一个FEBS权限系统,但是没有找到搭建手册,自己记录一下. 1.下载项目:https://github.com/wuyouzhuguli/FEBS-Shiro2.创建数据库:执行sql文件夹 ...