| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> c语言数组 -> 正文阅读 |
|
[C++知识库]c语言数组 |
1.1定义一维数组 ? ? ? ? 数组就是在内存空间中连续存在的相同类型的变量空间。要定义一维数组,其一般形式为: 类型符 数组名[常量表达式] 例如:int a[10];? ? ? ? 它表示定义了一个整形数组,数组名为a,此数组共有10个整形元素。 说明: ? ? ? ? (1)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示数组的个数,即数组长度。例如,指定a[10],表示a数组中有10个元素。注意,下表是从0开始的,这是个元素是:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9].特别注意,按上面的定义,不存在数组元素a[10]。 ? ? ? ? (2)常量表达式中可以包含常量和符号常量,如"int a[3+5];"是合法的。不能包含变量,如"int a[n];"是不合法的。也就是说,C语言不允许对数组大小做动态定义,即数组大小不依赖于程序运行过程中变量的值。 ? ? ? ? 说明:如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非变量表达式。如: ? ? ? ? ? ? ? ? void func(int n) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? int a[2*n];? ? ? ? ? ? ? ? ? ? ? ? //合法,n的值从实参来 ? ? ? ? ? ? ? ? ? ? ? ? ... ? ? ? ? ? ? ? ? } 在调用func函数时,形参n从实参得到值。这种情况称为“可变长数组”,允许在每次调用func函数时,n有不同的值。但是在执行函数时,n的值是不变的,数组长度是固定的。 ? ? ? ? 如果指定数组为静态(static)存储方式,则不能用“可变长数组”。也就是前面说的:c语言不允许对数组大小作动态定义。 1.2 引用一维数组元素 ? ? ? ? 在定义数组并对其中个元素赋值后,就可以引用数组中的元素。应注意:只能引用数组元素而不能一次整体调用全部元素的值。 ? ? ? ? 引用数组元素的表示形式为: 数组名[下标] 下标可以是整型变量或整形表达式。例如: ? ? ? ? a[0]=a[5]+a[7]-a[2*3] 注意:定义数组时用到的“数组名[常量表达式]”和引用数组元素时用的“数组名[下标]”形式相同,但含义不同。如: int a[10];? ? ? ? ? ? ? ? ? ? ? ? //这里表示定义数组时指定数组包含10个元素 t=a[10];? ? ? ? ? ? ? ? ? ? ? ?//这里表示引用a数组中序号为10的元素 1.3一维数组的初始化 ? ? ? ? (1)在定义数组时对全部数组元素赋予初值 ? ? ? ? (2)可以指给数组中的一部分元素赋值。系统自动给后面元素赋初值为0。 ? ? ? ? (3)在对全部数组元素赋初值时,由于数据的个数已经确定,可以不指定数组长度。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int a[5]={1,2,3,4,5}; =? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int a[]={1,2,3,4,5}; ? ? ? ? ? ? ? ? 但是,如果数组长度与赋初值得到个数不相同,方括号中的数组长度就不能省略。 例题:有10个地区的面积,要求对他们按从小到大的顺序排列(冒泡法比较大小)
? 2.1定义二维数组 二维数组定义的一般形式为: 类型说明符 数组名[]常量表达式[常量表达式]; 例如:? ? ? ? float pay[3][6];? ? ? ? ? ? ? 此上定义了一个float型的二维数组,第一维有3个元素,第二维有6个元素。 注意:用矩阵形式(如3行4列形式)表示二维数组,是逻辑上的概念,能形象地表示出行列关系。而在内存中,各元素是连续存放的,不是二维的,是线性的。 2.2怎样引用二维数组的元素 二维数组元素的表示形式为: 数组名[下标][下标] 例如a[2][3]表示a数组中序号为2的行中序号为3的列的元素。下标应是整形表达式,如a[2-1][2*2-1] 数组元素可以出现杂子表达式中,也可以被赋值,如: b[1][2]=a[2][3]/2 注意:在引用数组元素时,下标值应在已定义的数组大小的范围内。如: int a[3][4]; ... a[3][4]=3;? ? ? ? ? ? ? ? ? ? ? ? //不存在a[3][4]元素 按照上面的定义,数组a的行下标范围为0~2,列下标的范围为0~3,用a[3][4]表示元素超过了数组的范围 2.3二维数组的初始化 (1)分行给二维数组赋值。如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; ? (2) 可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序给个元素赋初值,如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以对部分元素赋初值。如: ?int a[3][4]={{1},{5},{9}}; 它的作用是只对各行第一列(即序号为0)的元素赋初值,其余元素自动为0。 (4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于 int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 3.1定义字符数组 用来存放字符数据的数组是字符数组。字符数组中的一个元素存放一个字符。 定义字符数组的方法和定义数值型数组的方法类似。例如: char c[3]; c[0]='I';c[1]=' ';c[2]='a'; 以上定义了c为字符数组,包含3个元素。由于字符型数组是以整数形式(ASCII)码存放的,因此也可以用整形数组来存放字符数据,合法但是浪费储存空间。 3.2字符数组的初始化 例:char c[3]={'I',' ','a'}; 注意:如果在定义字符数组时候不进行初始化,数组中各元素的值是不可预料的。如果初值个数小于数组长度,则其余元素自动定为空字符(即'\0')。? 也可以定义和初始化一个二维字符数组。 3.3引用字符数组中的元素 3.4字符串和字符串结束标志 在C语言中,是将字符串作为字符数组来处理的,字符串中的字符是逐个存放到数组元素中的。 c语言规定了一个“字符串结束标志”以'\0'作为结束标志,在遇到/0字符时,表示字符串结束,把它前面的字符组成一个字符串。 c系统再用字符数组存储字符串常量时会自动加一个'\0'作为结束符。例如"C program"共有9个字符,在数组中它占10个字节,最后一个字节'\0'是由系统加上的。 因此,对字符数组初始化的方法又可以补充一种,即用字符串常量使字符数组初始化。例如: char c[]={"i am happy"}; 也可以直接省略花括号,写成: char c[]="i am happy"; 3.5字符数组的输入输出 字符数组的输入输出有两种方法。 (1)逐个字符输入输出 (2)将整个字符串一次输入或输出。用“%s”格式符,意思是对字符串(string)的输入输出。例如: char c[]={"China"}; printf("%s",c); 可以用scanf函数输入一个字符串。例如: scanf("%s",c); 注意:scanf函数中的输入项如果是字符数组名,不要再加地址符&,因为在C语言中数组名代表该数组的起始地址。下面写法不正确: scanf("%s",&str);? ? ? ? ? ? ? ? ? ? ? ? //str前面不应加& ? ? ? ? ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:17:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |