数组
元素类型 数组名称[元素个数]
二维数组: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组
元素类型 数组名称[一维数组的个数][每个一维数组的元素个数];
元素类型 数组名称[行数][列数];
元素类型: 说明二维数组中每个一维数组存储什么类型的数据
一维数组的个数: 说明二维数组有多少个元素
每个一维数组的元素个数 : 说明二维数组中每一个一维数组的元素个数
// 如何遍历二维数组
// 思路: 1.取出二维数组的每一个元素(取出二维数组中的一维数组)
// 2.遍历一维数组
// 数组的名称就是数组的地址
// &nums == nums == &nums[0]
// 数组作为函数的参数传递, 修改形参的值会影响到实参
字符串
用双引号引起来的就是字符串
printf("Hello, World!\n");
// 如何定义字符串变量, 由于字符串是同一种类型的数据组成, 并且是有序的
// 注意: 字符串变量和普通的字符数组有一定的区别
// C语言规定, 字符串必须以\0结尾(作为字符串的结束符号), 所以字符串变量的元素个数比字符数组的元素个数多一个 \0
字符串用法
1.如何输出字符串
// 1.1可以使用printf的%s占位符来输出
// 弊端 : 如果想要换行, 必须加上\n
// 优点 : 可以自定义格式化需要输出的字符串, 也就是可以按照我们需要的格式来输出
// 1.2可以使用puts函数来输出
// 优点: 可以自动换行
// 缺点: 不可以自定义格式, 只能原样输出
2.如何输入字符串
//2.1利用scanf接收字符串的注意点
// scanf接收字符串, 会以空格 , tab, 回车作为结束符号, 也就是说利用scanf接收字符串时, 字符串中不能出现空格, tab, 回车
// 2.2利用gets接收字符串
// warning: this program uses gets(), which is unsafe.
// 如果使用gets接收字符串, 系统会提示我们正在使用一个不安全的方法接收字符
// 优点: 如果利用gets接收字符串 , 可以在字符串中输入空格, tab
3.如何计算字符串的长度
// strlen的原理: 从传入的地址开始逐个取出字符串, 每取出一个就让计数器+1. 直到遇到\0为止
// size_t size = strlen(str); // 计算出来的结果不包括\0
字符串拼接
原理 : 首先遍历第一个字符串,直到遇到\0为止, 然后取出第二个字符串中的字符, 从\0的位置开始添加, 添加完毕之后再在最后添加一个\0
// dest : 目标 src : 源
// 将src中的数据拼接到dest后面
// 注意: 要想使用字符串拼接函数, 那么dest必须是一个数组, 并且数组的长度必须大于拼接之后的长度