数组

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

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

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

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

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

一维数组

定义一维数组

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

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

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. 【Unity|C#】基础篇(3)——类(class)/ 接口(interface)

    [学习资料] <C#图解教程>(第4~7章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baidu ...

  2. php中构建树状图

    /** * 指定根层级的树状图 * @param array $list 初始数组 * @param int $root 最上级一条数据的id * @param string $pk 每一条数据的id ...

  3. visdom使用监视训练过程的应用,viz.line参数说明

    visdom使用监视训练过程的应用,viz.line参数说明 待办 viz = Visdom() viz.line([0.], [0.], win='train_loss', opts=dict(ti ...

  4. Ubuntu18.04 一条命令安装caffe问题

    由于caffe安装坑很多,而且caffe框架很久不更新了,微调对框架影响不大,所以对与ubuntu18.04在caffe官网提供了一条命令安装,避免很多踩坑痛苦. CPU的一条命令安装: sudo a ...

  5. [CF603R] Game - 博弈论

    [CF603R] Description 给定 \(N \times N\) 的棋盘,两人轮流放棋子.棋子的上下左右四个格子不能再放棋子.不能操作的人负.判断胜负. Solution 用的是很常见的思 ...

  6. python之pandas简介

    一. Pandas简介 1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和 ...

  7. crowdfunding项目03——mapper映射错误

    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'TAd ...

  8. crontab实践

    1.crontab概要 2.crontab使用 3.关键配置信息 3.1如何配置定时任务 4.注意事项 参考 https://www.cnblogs.com/keithtt/p/6946498.htm ...

  9. 每天进步一点点------Allegro 布线完成后如何修改线宽

    一.如果要改变整个一条导线的宽度 1.在find栏里选择Cline; 2.在PCB中选择要改的导线,点击右键,选择Change Width    3.在对话框中输入你想要的线宽 3.如果要改变整个导线 ...

  10. Redis 基本数据类型以及相应操作

    〇.常用命令 select <num> 选择库0~15 默认0号库 key * 查看当前库所有键(可以接正则表达式) exists <key> type <key> ...