sphao 发表于 2017-7-28 09:18

【笔记】第六章 数组(C语言)

本帖最后由 sphao 于 2017-7-30 18:00 编辑

第六章 数组
特点: 同一数组中的所有元素都属于 同一种数据类型, 数组元素用数组名和相应的下表来确定
方法: 一个数组元素其实就是一个变量(可以称为带下标的变量)
一 一维数组的定义和引用(只有一个下标)
   1. 一维数组定义格式:
   类型名 数组名[常量表达式];
   定义数组有四个注意:
          (1)数组名属于用户自定义标识符, 要遵守标识符命名规则
          (2)定义一维数组时, 数组名后必须用一个方括号将常量表达式括起来, 常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小)
          (3)定义数组时方括号中的 表达式不能含有变量. 另外表达式的值必须为正整数
          (4)C语言每个数组在内存中分配空间时是连续分配的
   2. 一维数组元素的引用格式:
          数组名[下标]
   ♠先定义 后使用
   ♠不能整体用数组, 只能单独引用其中的元素, 引用时下标可以是表达式
   ♠数组元素的下标值在0~N-1之间
   3. 一维数组初始化:
   格式:
   类型名 数组名[常量表达式]={初值1, 初值2, ...};
   注意:
   (1)定义一维数组时可以将各元素的初始值依次放在一对{ }中赋给数组
   (2)多则出错, 少则补零
   (3)定义赋初值的个数等于数组长度, 数组长度可以省略
   (4)一个也不给则是随机值
   (5)只能在定义数组的同事用{ }给数组元素整体赋值
二 二维数组的定义个引用(有两个下标)
   1. 二维数组的定义格式:
   类型名 数组名[常量表达式1][常量表达式2];
   注: (1)数组名要遵守用户自定义标识符的命名规则
          (2)定义二维数组第一个方括号常量表示行数, 第二个方括号常量表示列数
          (3)定义数组时方括号中的表达式不能含有变量, 且表达式的值必须是正整数
          (4)在内存中二维数组元素的存放也是连续的, 先行后列原则
   2. 二维数组元素的引用
   数组名[行下标][列下标]
   3, 二维数组的初始化
   方法1: 将初值依次放在一对{ }中, 与一维数组初始化格式相同
   方法2: 定义二维数组同时, 按行初始化每一行初值均用一对{ }括起, 采用嵌套{ }
   注意: 定义二维数组的同时给数组初始化,可以省略行数,但列数不能省略
三 字符数组
   C语言中没有字符串变量,那么如何存储
          字符数组   字符型指针
   1. 字符数组的初始化
   与其它类型数组的初始化方式一样,只是其初始值是字符
   2, 字符串
   因为字符串最后都有一个字符串结束符('\0'), 所以用字符数组来存放字符串时一定要有一个元素存放结束符'\0'
   字符串给字符数组初始化的方法
   (1)char a="abcd";
   (2)char a={"abcd"};
   (3)char a={'a','b','c','d', '\0'};
   ♠双引号能省略{ }
   ♠双引号自动加'\0', 长度加1
四 数组的使用
1. 一维数组的使用
   结构: 找配对 找控制 标语句
   过程: 画图
2. 二维数组的使用
   双重for循环
3. 字符串使用
(1)字符串存储(赋值)四种方法
   方法1: scanf(); 键盘输入
          scanf("%s", a);
          scanf("%s", &a);   非法, 数组名本身为地址
   注: 用%s格式输入时, 遇到空格符或回车符则自动结束输入
               printf(); 输出
   注: 输出时则从当前地址开始, 直到遇到结束符
   方法2: gets(); 键盘输入
   格式: #include<stdio.h>
               gets(字符数组);
   功能: 读取一个字符串赋给字符数组
   注:
   (1)该函数输入字符时, 只有遇到回车符系统才结束读取字符
   (2)不论是用%s还是gets( )在作为输入时, 均不需要输入双引号, 若输入时用了双引号则双引号也作为字符串的有效字符
               puts(); 输出
          格式: #include<stdio.h>
                  puts(字符数组或字符串常量);
          功能: 在屏幕上输出字符数组中的字符
          注: 用该函数输出与用%s格式输出一样, 只是该函数将'\0'转成'\n'输出
   方法3: 字符串初始化
方法4: strcpy();
                  strcpy(a, "abcd");
(2)字符串函数(处理)
   第一个函数: strcat()
   格式: #include<string.h>
               strcat(字符数组1, 字符数组2)
   功能: 连接
   
   第二个函数: strcpy()
   格式: #include<string.h>
               strcpy(字符数组1, 字符数组2)
   功能: 将字符数组2中的字符串替换到字符数组1中, 函数值为字符数组1的首地址
   
   第三个函数: strcmp()
   格式: #include<string.h>
               strcmp(字符数组1, 字符数组2)
   功能: 函数返回 相同位置不同字符的ASCII码差值
   
   注: 不能用关系运算符直接进行字符串大小或字符串数组大小的比较
第四个函数: strlen()
   格式: #include<string.h>
               strlen(字符数组)
   功能: 求出字符数组的实际长度, 不包括结束符
   

【笔记】第七章 函数与预编译(C语言)
http://www.52pojie.cn/thread-629758-1-1.html
【笔记】第六章 数组(C语言)
http://www.52pojie.cn/thread-629287-1-1.html
【笔记】第五章 循环结构(C语言)
http://www.52pojie.cn/thread-628823-1-1.html
【笔记】第四章 选择结构(C语言)
http://www.52pojie.cn/thread-627932-1-1.html
【笔记】第三章 顺序结构(C语言)
http://www.52pojie.cn/thread-627411-1-1.html
【笔记】第二章 C语言组成及数据
http://www.52pojie.cn/thread-627006-1-1.html
【笔记】第一章 C语言基础知识
http://www.52pojie.cn/thread-626978-1-1.html











来一发呗 发表于 2017-7-28 09:43

有前5章沒,你可以把前五章附上

kukuyu1314 发表于 2017-7-28 10:13

厉害了,我的哥

飞枫亦矢 发表于 2017-7-28 14:13

666啊{:301_977:}

cjj15697886981 发表于 2017-7-28 14:52

以前大一的时候没听课现在看不懂
页: [1]
查看完整版本: 【笔记】第六章 数组(C语言)