什么叫数组?
数组的特性?
(1)数组是一组有序数据的集合
(2)可以用一个数组名来唯一的确定数组中的元素
(3)数组中的每一个元素都属于同一个数据类型
数组的定义?
(1)命名规则和变量名一致
(2)定义时需要指定数组中的元素,如果是在被调用函数中其长度可以是变量和常量表达式
(3)常量表达式中可以包括常量和符号常量
(4)如果指定为静态数组,则不能使用变量作为长度值
类型名 数组名[长度]
int arr[100];
数组的引用
数组名[下标]
arr[0];
数组的初始化
(1)定义数组时对全部数组元素进行赋值
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
(2)给数组中一部分的元素赋值,其余部分为0
int a[10] = {1, 2, 3, 4, 5};
(3)如果数组中个数就是赋值的长度,可以直接赋值,不写数组的长度
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
数组的初始化
(1)定义数组时对全部数组元素进行赋值
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
(2)给数组中一部分的元素赋值,其余部分为0
int a[10] = {1, 2, 3, 4, 5};
(3)如果数组中个数就是赋值的长度,可以直接赋值,不写数组的长度
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
二维数组的定义
类型说明符 数组名[常量表达式][常量表达式];
int a[10][10];
二维数组的引用
数组名[下标][下标]
a[1][1];
二维数组的初始化
(1)分行给二维数组赋值
a[2][2] = {{1, 2}, {1, 2}};
(2)可以将所有数据写在一起,按照排列顺序自动赋值
a[2][2] = {1, 2, 1, 2};
(3)可以给部分元素赋值,未赋值的为0
a[2][2] = {{1}, {1}}
(4)如果对全部元素进行赋值,则第一维数组可以不写长度,但是第二个需要
a[][2] = {1, 2, 1, 2};
字符数组
用来存放字符数据的数组就是字符数组。字符数组中一个元素存放一个字符
char c[1];
c[0] = 'W';
由于字符型数据是以ASCII码存放的,因此也可以使用整数型数字存放字符数据,但是比较浪费存储空间
int c[1];
c = 'w';
字符数组的初始化
如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数大于数组长度,则会出现语法错误。
如果初值小于数组长度,则只将数据赋值给前面的,后面剩余的自动赋值空字符('\0')(二维数组通用)
char q[10] = {'w', 'f'};
如果初值和数组长度相等,在定义时就可以省略长度,系统会自动确定数组长度。(二维数组通用)
char q[1] = {'w'};
字符数组和整形数组引用是一样的,使用下标
字符串和字符串结束的标志
在C语言中是将字符串作为字符数组来处理的。
C语言规定了一个“字符串结束标志”,以字符'\0'作为结束标志。
在遇到'\0'时,表示前面的字符组成一个字符串。在ASCII中他的值为0
如果用scanf来接收字符串的话,字符串中不能含有空格,否则将以空格作为串的结束符。如果你键入得是hello world 那么实际上scanf只能获取hello 这个单词。所以要接收空格的话可以用gets()这个函数。gets(str)是读入一串以回车结束的字符,顺序存入到以str为首地址的内存单元中,最后写入字符串结束标志 “\0 “,
同样在输出字符串时要用puts(),输出时直到遇到 \0 为止,最后输出一个换行符。
对字符数组初始化的方法补充,用字符串常量对字符数组初始化。
char arr[100] = {"nfjguhns sdng"};
char arr[100] = "rfgr jrfkgnsr ";
char arr[10] = {'q', 'w', 'e', '\0'};
字符数组并不要求他的最后一个字符为'\0',甚至可以不包含'\0'。
字符数组的输入输出
(1)逐个字符输入输出,可以用格式符 % c输入输出一个字符,printf的输出项填写的是数组元素名
(2)将整个字符串一次输入输出可以使用 % s格式符,printf的输出项填写的是数组名
(3)输出的字符不包括'\0'
(4)如果数组的长度不大于字符串的书记长度,也只是输出到'\0'之前
(5)如果利用scanf输入多个字符串,需要每个字符串之间输入空格
(6)scanf函数中的输入项如果是数组名,不需要加地址符&,因为数组就是起始地址
使用字符串处理函数
puts(数组名):作用是将一个字符串输出到终端,可以包含转义字符
gets(数组名):作用从终端输入一个字符串到字符数组,返回值是数组的起始地址。
strcat(数组名1,数组名2):作用是将数组2连接到数组1中。
strcpy():第二个可以是字符常量
strcmp():作比较
strlen():计算字符串数组的长度,不包含结束符,也可以计算机字符常量的长度
strlwr():大写变小写
strupr():小写变大写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)