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

我是初学者,书上有这么一段:“不要将字符常量与单字符的字符串常量混淆。例如:
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)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-22
字符型是单个字符
字符串是由字符型的单个字符所组成的集合。
字符串在c语言中表示为字符型数组哈。c语言中并没用字符串这种数据类型。
你用的编译器是c++的,所以就有了字符串这样的类型哈。
字符型在c中规定死了是一个字节。
而字符串是多个字节的。
第2个回答  2007-03-28
单引号表示字符,双引号表示字符串。
char是字符型的,占一个字节内存,每个字母占一个内存。所以c='a'是对的
而c="abcd"占4个字节内存所以肯定是不对的。ar
______
c中的字符串要用数组或指针定义,比如:char a[5]="abcde";
或char *a;*a="abcde";
第3个回答  2007-03-28
第二个错是因为用了双引号,字符型是用单引号的. 字符串是是用双引号的.
而最后一个错是,abcd明显是一串字符串,所以不能用char c;来说明,如果要说明,可以使用数组形式定义:a[4]="abcd"
第4个回答  2007-04-06
char c;
c='a';
c="a" ;
c="abcd";
因为你在上面定义了c为字符形式,而字符形式就占一个字节,所以c='a';是对的,但c="a" ;则是错的了.因为字符型是用单引号的. 字符串是是用双引号的.
而字符串储存的时候,系统会自动在在字符串的后面增加一个结束号'\0',而这个号是系统自动增加的,每个字符串都会有的,而这个结束符占了一个字节,而字符类型的C只有一个字节,所以是错误的.c="abcd";而只一个更不用说了,差了4个字节,当然不行了.
相似回答