C语言中,为什么字符串可以赋值给字符指针变量

char*p,a='5';p=&a;//显然是正确的,p="abcd";//但为什么也可以这样赋值??一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点!... char *p,a='5';
p=&a; //显然是正确的,
p="abcd"; //但为什么也可以这样赋值??
一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点!
展开
 我来答
五转故剑情深
2019-09-04
知道答主
回答量:2
采纳率:0%
帮助的人:1363
展开全部
1. 'a'是字符常量,"a"是字符字面量,一个加单引号一个加双引号,是两个不同的东西不要搞混了

2.1 字符常量'a'使用整数(字符集的数值码)表示,最常用的字符集是ASCII码,在ASCII码中,字符'a'的值为97,这也是为什么字符可以作加减法运算和比较

2.2 字符串字面量"a",在c语言中作为数组来处理,既然如此,编译器就会把它看作是char *类型的指针。题干中p = "abcd"其实是将"abcd"首个字母的地址赋值给了字符指针变量p,或者说p指向了字符串字面量"abcd"的第一个字符

2.2.1 c语言编译器处理长度为n的字符串字面量时,会为其分配长度为n+1的内存空间,第n+1个位置存放额外追加的空字符(字符串结束的标志)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-06-24
展开全部
单引号和双引号,赋值的时候这个应该有讲究吧!具体忘了,几年没去看了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式