一维数组

  一维数组中的元素是排列成一行的,当需要存放一行或一列数据时常用一维数组。一维数组的元素常用“数组名[下标]”来表示,其中,下表是从0开始的。例如:a[0]="hello";a[1]="world";

  1)数据类型可以是任何基本类型。

  2)数组名是按照“标识符”的规则构成的。

  3)长度是一个“整形常量表达式”,通常是一个整形常量。

  4)一个数组定义语句中可以只定义一个数组,也可以定义多个数组,还可以同时定义数组和变量。

  引用数组元素时,系统并不检查下标是否越界,即下标可以不在0~长度-1的合法范围内。但由于下标越界,超出数组元素的合法范围,会造成程序运行结果的不可预料。

  【说明】下标越界大多是针对数组来说的。比如你定义的数组的长度是10。那么你的数组里就有10个元素,他们的小标分别是从0--9。如果下标大于9了,这就叫下标越界了。

  例子:short y[2];

     y[2]=10;   scanf("%f",&y[3]);  y[1]=y[4];

一维数组的初始化赋值:

  数组元素和变量一样,可以在定义数组时赋予初值,称为数组的初始化。

  例如:int a[5]={1,2,3,4,5};          int a[]={1,2,3,4,5};  int a[10]={1,2,3,4,5}(其余的五个下标赋值为0)

写个简单的例子:从键盘上输入10个字符,然后按相反次序输出。

void main{

  char a[10];

  int i;

  for(i=0;i<10;i++){

    scanf("%c".&a[i]);

  }

  for(i=9; i>=0;i--){

    printf("%c",a[i]);

  }

}

对于一维数组类型说明应注意以下几点:

  1) 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

  2) 数组名的书写规则应符合标识符的书写规定。

  3) 数组名不能与其它变量名相同。例如:int a;  double a[10];

  4) 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。

  5) 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:int a =4;int b[a];

  6) 允许在同一个类型说明中,说明多个数组和多个变量。例如:int a,b,c,d,k1[10],k2[20];

二维数组

  数组元素的下标在2个或2个以上,这样的数组成为多位数组。

  【格式】数据类型 数组名 [行长度][列长度],......;

  【说明】

    #数据类型可以是任何基本类型,也可以是后面将要介绍的其他数据类型,如指针,结构等。

    #数组名师按照“标识符”的规则构成的。

    #行长度和列长度都是一个“整型常量表达式”,表示该二维数组有“行长度”行“列长度”列个数组元素。

    #一个数组定义语句中可以只定义一个二维数组,也可以定义多个二位数组,可以在一个定义语句中同时定义一维和二维数组,还可以同时定义变量。

二维数组定义举例

  int a[3][3];

  定义一个3行3列共9个元素的整形二维数组a。其元素为:

  a[0][0],a[0][1],a[0][2]

  a[1][0],a[1][1],a[1][2]

  a[2][1],a[2][1],a[2][2]

  1)分行给二维数组所有元素赋初值

  int a[2][3]={{1,2,3},{4,5,6}};

  其中{1,2,3}是赋给第0行3个数组元素的,也可以看成是赋予二维数组a中一维数组a[0]的;{4,5,6}是赋给第1行3个数组元素的,也可以看成是赋予二维数组a中一维数组a[1]的。

  2)不分行给多维数组所有元素赋初值

  int a[2][3]={1,2,3,4,5,6};

  各元素获得的初值和第1中方式的结果完全相同。C语言规定,用这种方式给二维数组赋初值时,是先按行,后按列的顺序进行的,即前3个初值是赋予第0行元素的,后3个初值是赋予第1行元素的。

  3)只对每行的前若干个元素赋初值,此时所有未赋初值的数组元素均获得零值

  int a[2][3]={{1},{4,5}};

  a[0][0]值为1,a[0][1]值为0,a[0][2]值为0;

  a[1][0]值为4,a[1][1]值为5,a[1][2]值为0;

  4)只对前若干行的前若干个元素赋初值,此时所有未赋初值的数组元素均获得零

  char a[2][3]={{'1','2'}};

  a[0][0]值为'1',a[0][1]值为'2',a[0][2]值为'\0';

  a[1][0]值为'\0',a[1][1]值为'\0',a[1][2]值为'\0';

  5)若给所有元素赋初值,行长度可以省略

  float a[][3]={{1,2,3},{4,5,6}};

  自动认为数组a[][3]的行长度是2.

  6)若分行给所有行的前若干个元素赋初值,行长度可以省略。

  float a[][3]={{1},{2,3}};

  自动认为数组a[][3]的行长度是2/

3)C语言数组(C自考学习)的更多相关文章

  1. C语言-数组的深入学习

    深入学习一下数组1.从内存角度来讲:数组变量就是一次分配多个变量,而且这些变量的地址是连续的,也就是存放这些变量的存储单元是依次相连接的.而且这多个变量必须单独访问,不可以一起访问的.因为他们的地址彼 ...

  2. GO语言学习(十四)Go 语言数组

    Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...

  3. C语言数组

    在C语言中,对于三维或三维以上数组的使用并没有很好的支持,而且使用率也非常的低,后面会对三维数组做一些简单的分析,这篇文章主要以二维数组来探讨一些C语言中数组使用的相关概念和技巧. 1 一个var[i ...

  4. C语言数组:C语言数组定义、二维数组、动态数组、字符串数组

    1.C语言数组的概念 在<更加优美的C语言输出>一节中我们举了一个例子,是输出一个 4×4 的整数矩阵,代码如下: #include <stdio.h> #include &l ...

  5. Go语言数组和切片的原理

    目录 数组 创建 访问和赋值 切片 结构 初始化 访问 追加 拷贝 总结 数组和切片是 Go 语言中常见的数据结构,很多刚刚使用 Go 的开发者往往会混淆这两个概念,数组作为最常见的集合在编程语言中是 ...

  6. GO语言数组和切片实例详解

    本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式: ...

  7. C语言 数组 列优先 实现

    C语言数组结构列优先顺序存储的实现 (GCC编译). 从行优先转换为列优先存储方式, 与行优先相比, 不同之处在于改变了数组维界基址的先后顺序, 从而改变了映像函数常量基址. /** * @brief ...

  8. C语言 数组 行优先 实现

    C语言数组结构行优先顺序存储的实现 (GCC编译). /** * @brief C语言 数组 行优先 实现 * @author wid * @date 2013-11-02 * * @note 若代码 ...

  9. 不可或缺 Windows Native (5) - C 语言: 数组

    [源码下载] 不可或缺 Windows Native (5) - C 语言: 数组 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 数组 示例cArray.h #ifn ...

  10. Go语言数组的使用

    Go 语言数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定义类型. 相对于去声明number0 ...

随机推荐

  1. 关于SEO的一些见解---关键词的选取布局以及内外链的建设

    前言     SEO是英文 Search EngineOptimiation的缩写,中文翻译为"搜索引擎优化"简单地说, SEO就是从搜索引擎上获得流量的技术 . 搜索引掌优化的主 ...

  2. Bash : test 命令

    在 Bash 脚本中我们一般会使用 test 命令来进行条件检查.test 命令的返回值为 0 或 1.0 表示 true, 1 表示 false.简单起见,我们可以直接认为 test 的结果为 tr ...

  3. Opencv处理鼠标事件-OpenCV步步精深

    在图片上双击过的位置绘制一个 圆圈 鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等. 我们可以通过鼠标事件获得与鼠标对应的图片上的坐标.我们通过以下函数来调用查看所 ...

  4. 初学python之,IDLE安装

    首先新手上路,写的第一篇博客,希望大家不要吐槽. 1.首先在python官网下载最新python版本 https://www.python.org/(注意根据自己的操作系统来选版本) 安装很简单傻瓜式 ...

  5. junit搭配hamcrest使用

    开篇 - 快速进行软件编码,与功能测试应该是每个写代码的人,应该掌握的技能,如何进行优雅的写代码,把测试的时间压缩,腾出时间来休息.下面听我一一道来: 依赖:junit 4.4 hamcrest 1. ...

  6. 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题

    很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...

  7. Cosmos OpenSSD--greedy_ftl1.2.0(一)

    从主函数跳到ReqHandler,在ReqHandler内先初始化SSD--InitNandReset,然后建立映射表InitFtlMapTable void InitNandReset() { // ...

  8. zookeeper 笔记-ACL

    zookeeper中,znode的ACL是没有继承关系的,是独立控制的,zookeeper的acl可以从3个维度理解,一是scheme,二是user,三是permission,通常表示为scheme: ...

  9. abapGit简介与教程

    你是ABAP开发者?你用abapGit吗? 看到这个问题,读者也许会想,什么是abapGit?就让我们从这个问题开始.简单地说,abapGit是一个以ABAP写成为ABAP服务的Git客户端. 有的读 ...

  10. Python中如何防止sql注入

    sql注入中最常见的就是字符串拼接,研发人员对字符串拼接应该引起重视,不应忽略. 错误用法1: sql = "select id, name from test where id=%d an ...