c语言字符型和字符串型的区别?

来源:百度知道 编辑:UC知道 时间:2024/04/29 06:55:21
我是初学者,书上有这么一段:“不要将字符常量与单字符的字符串常量混淆。例如:
char c;
c='a';是正确的,而
c="a"是错误的;
c="abcd"也是错误的。
为什么最后一个错误啊?声明字符串常量是不是不能用"char"啊?应该用什么?
请问,打印字符型的时候,printf("%c/n,"c1),如果是打印字符串型,那个%c应该改成什么呢???
(另外请帮我看看这个问题,http://zhidao.baidu.com/question/23077695.html回答好了追加10分)

我只回答一下你提出的问题吧.其他不懂的你可以再跟我联系.
char c; 声明字符变量c,系统为c分配一个字符的空间
c="abcd"; //这是是错误的. abcd要占4的字符的空间,c中放不下.
声明字符串常量也能用"char".要用到数组.(如果你没学到数组,等你学了以后就明白了)例:
char string[4];
string="abcd";
string中存放的就是字符串"abcd"了.
打印字符型的时候,printf("%c/n,"c1),如果是打印字符串型,只需把%c改为%s即可.例:
printf("%s",string); //打印字符串string(abcd)

char c;
c='a';
c="a" ;
c="abcd";
因为你在上面定义了c为字符形式,而字符形式就占一个字节,所以c='a';是对的,但c="a" ;则是错的了.因为字符型是用单引号的. 字符串是是用双引号的.
而字符串储存的时候,系统会自动在在字符串的后面增加一个结束号'\0',而这个号是系统自动增加的,每个字符串都会有的,而这个结束符占了一个字节,而字符类型的C只有一个字节,所以是错误的.c="abcd";而只一个更不用说了,差了4个字节,当然不行了.

字符变量
字符变量的取值是字符常量,即单个字符。字符变量的类型说明符是char。字符变量类型说明的格式和书写规则都与整型变量相同。
例如:
char a,b; 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。
字符串常量
字符串常量是由一对双引号括起的字符序列。例如: "CHINA" ,"C program:" , "$12.5"