C语言学习笔记5
一、综述
昨天学习了字符串,但是因为时间太晚没有写博客,今天补上。
二、正文
(1)字符串的定义
1、概述
字符串算是比较复杂的一块知识,首先,字符串的定义是,包含一组同一类型的数据的合集,数组可以存放一个或多个数据,但是数量不能为0,数组可以包含多个数据,但是类型需要相同。
2、字符串的初始化
字符串的初始化分为完全初始化和不完全初始化。
#include<stdio.h> int main() { int arr[10] = {0} ; int arr1[5] = {"12345"} ; int arr2[] = {"12345"}; return 0 ; }其中arr属于不完全初始化,数组名后面的[]中的数字表示字符串的长度,arr的长度为10,但是只使用了0进行初始化。
arr1属于完全初始化,因为arr1的字符串长度为5,里面放了,1,2,3,4,5,进行了完全初始化。
arr2也属于完全初始化,因为arr2没有指定字符串长度,但是后面输入了,1,2,3,4,5进行初始化,系统会自动将arr2的字符串长度设置为5.
3、字符串的结束
关于字符串还有个知识点是,字符串中默认会在结尾加一个\0来表示字符串的结束,如果没有\0则会导致系统错误识别字符串,导致输出乱码。
#include<stdio.h> int main() { int arr[3] = {'1','2','3'} ; printf("%s" , arr) ; return 0 ; }上面这段代码的输出结果就是在3后面会出现乱码,因为系统只能读到3,但是后面没有\0作为结束标志,系统会试图读取一个字符,但是因为没有给定所以系统会随机读取,在不同的系统上,会有不同的乱码样式,但是总归是一种错误的写法。
4、字符串的长度
另外要说一下字符串的长度,字符串的长度通常用sizeof来进行计算,sizeof(arr)计算的就是字符串总共有多长,sizeof(arr[0])则是计算字符串中单个字符的长度。
因为字符串不止一种类型,字符串可以是任意类型的,所以如果需要计算字符串总共有多少个字符的话可以用sizeof(arr)/sizeof(arr[0])来进行计算,[0]中的0可以替换为任意数字,并不会影响计算结果。
strlen也是用来计算字符串长度的,但是strlen会将\0也计算到字符串的长度中,sizeof则会在读到\0的时候忽略\0并计算结果。
5、输出字符
输出指定字符需要指定字符的下标才可以,字符的下标会从0开始计算例如:
#include<stdio.h> int main() { int arr[] = {"123456"} ; printf("%s" , arr); printf("%d" , arr[1]); return 0 ; }这段代码的输出结果为,1234562,因为%s输出的是整个字符串,所以会把123456这几个在字符串里的字符全部输出,2则是因为arr[1]表示输出字符串中第二个字符,而第二个字符是2.
(2)、字符串的维度
1、维度讲解
字符串分为一维字符串,二维字符串,多维字符串
一维字符串就是最基本的字符串,只有一组字符串。
二维字符串就是包含两个字符串的字符串。
多维字符串即为包含两个或以上二维字符串的字符串,统称多维字符串。
#include<stdio.h> int main() { int arr[] = { 0 } ; int arr1[] = { 0 } ; int arr2[] = {arr,arr1} ; int arr3[] = {arr,arr1} ; int arr4[] = {arr2,arr3} ; return 0 ; }这当中arr、arr1为1维数组,arr2、arr3为二维数组、arr4为多维数组。
2、二维数组的初始化,及输出
#include<stdio.h> int main() { int arr[2][3]={1,2,3,4,5,6}; int arr1[2][3]={"123","456"}; printf("%s" , arr ); printf("%d" , arr1[1][1]); return 0 ; }二维数组的初始化需要先确定列数,及第一个[],再确定行,即第二个[],列可以不用给定,但是行必须给定,每行确定是多长以后,如果初始化所用的字符超出则会自动放到下一行中,但是如果不给定每行多长则会报错。
初始化可以使用第一种方式,及每个字符中间用,隔开,也可以使用第二种,将两串字符串用""包裹,“,”分隔也是可行的。
字符串的输出则是使用%s进行输出表示输出字符串,%c是输出单个字符,想要输出二维数组中的特定位置的字符时需要指定行和列才可以精准输出。
如上面的代码,printf("%d" , arr1[1][1]);的输出结果就是5,因为5是第2行,第2个字符。
