C语言中,为什么字符串可以赋值给字符指针变量
char*p,a='5';p=&a;//显然是正确的,p="abcd";//但为什么也可以这样赋值??一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点!...
char *p,a='5';
p=&a; //显然是正确的,
p="abcd"; //但为什么也可以这样赋值??
一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点! 展开
p=&a; //显然是正确的,
p="abcd"; //但为什么也可以这样赋值??
一直理解不了为什么可以将字串常量赋值给字符指针变量,请各位指点! 展开
展开全部
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个位置存放额外追加的空字符(字符串结束的标志)
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
展开全部
单引号和双引号,赋值的时候这个应该有讲究吧!具体忘了,几年没去看了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询