【C语言】字符数组与字符串

定义及初始化

  • 字符数组是用来存放字符的数组,数组元素的类型是char型,元素用单引号;定义时对于数组的长度可以自行选择是否规定,一旦规定了数组的长度,那元素个数就不能超过这个长度。初始化时,可以指定数组的大小(含有多少个元素)、可以对数组全部或者部分赋值初始化,也可以用字符串对数组进行初始化。
  • 字符串就是用双引号括起来的任意字符序列,可以看作是一个个单个字符的数组,但是字符串的末尾有’\0’结束标记。初始化时,可以将字符串赋值给一个字符数组,也可以用字符型指针变量。
  • 字符串可以理解为由字符数组形变而成,在末尾加上了’\0’。

赋值方式

  • 字符串数组可以对数组中任意一个元素赋值,可以在定义的时候用字符串为其赋值,但是定义了一个字符数组之后,在后面为其赋值不可以用字符串了(这一点很多人都容易忽略,尤其是在C语言的选择题当中)。

  • 字符串在定义时可以用字符串直接进行赋值,在使用时,也可以对其中的某个元素进行更改。字符型指针字符串在使用时可以再次用字符串进行赋值,但是字符数组定义的字符串不行。

代码演示

//字符串数组的定义
	char a1[5];//仅定义
	char a2[5] = {'a','b','c','d'};//定义并初始化 
	char a3[] = {"abcd"};//用字符串初始化 
	char a4[] = "abcd";//用字符串初始化
	
//字符串的定义
	char str1[] = "abcd";//利用字符型数组 
	char* str2 = "abcd"; //利用字符型指针
	
//字符数组赋值
	char a[5];
	a[0] = 'a';//通过下标操作
	
//字符串赋值
	char* str;
	str = "abcd";//可以用字符串直接赋值

实例讲解

在这里插入图片描述
答案:C
解析:乍一眼看下去感觉四个选项似乎都对。那我们就来多看几眼,找找四个选项到底有什么不同,题目的考点究竟在哪里。对于B选项,其实就是一个最基础的字符数组,没有一点问题。ACD都通过了字符串对数组a进行了初始化,而字符串与字符数组很重要的一点不同是字符串比字符数组多了’\0’,正是这个’\0’让C选项的元素超出限制了。而D选项因为没定义数组元素多少逃过一劫(计算机自己会帮忙定义大小)。
在这里插入图片描述
答案:D
解析:题目中有字符型指针和字符数组。字符型指针字符串在使用时可以再次用字符串进行赋值,但是字符数组定义的字符串不行。所以首先排除A、C选项。B选项的大括号明显就是对数组的初始化使用的,根本不是一个字符串,所以选择D项。

写在最后

字符数组与字符串定义与初始化,基础赋值就讲到这里,接下来应该还会有关于字符串的讲解,毕竟这也是个重点与难点(如果"万恶"的指针结合起来的话),接下去的几天我也会根据我自身刷题的经历来分享一些做题经验,主要内容当然是C语言当中的难点与易错点。大家如果有什么学习上的困惑可以在评论区里留言或者私信我,看到的话一定会及时回复,这期的素材也是与博主Aikihi讨论得到,大家对编程语言感兴趣的也可以去关注他(他最近整理了很多素材,近期会发布),让我们一起学习,共同进步!
最后的最后,请喜欢我文章的朋友们多多点赞关注哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳的糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值