c语言字符串类型
‘壹’ 关于c语言字符型
关于printf("%c"a[i]);(如果把他换成printf("%s",a[i]);为什么不能编译?
回答: 编译应该没问题, 只是运行时必定错误.
字符串指一串连续的字符型的存储域. C语言的字符串在操作时一般以0值字符标志字符串的尾字符(占一个字符的存储域,但不计入字符串长度).
"%c"应该对应于字符型变量(当然字符串中的一个字符也可以);"%s"应该对应于一个指向字符串的指针变量.执行printf("%s",a[i]);时, 程序把字符a[i]的值作为字符串指针来使用,当然就发生错误了. 如果写成printf("%s",a)甚至printf("%s",&a[2])都是正确的.
另外, 用"%s"不用使用for循环, 一个printf("%s",a)即可输出一个以空字符(0)结尾的字符串; 而用for循环加printf("%c",a[i])的方式, 则是以字符方式输出a这个字符数组中全部10个字符, 即使这些字符不构成以空字符(0)结尾的字符串.
由此看来字符串必定是字符数组, 而字符数组里存储的不一定是字符串. 字符数组里每一个元素都可以取-128~127的值, 无符号字符数组里每一个元素都可以取0~255的值. 而C语言中的字符串所取的值是以0标志结束的一串非零字符(即-128~-1, 1~127; 对应于无符号字符是1-255; 大多在可打印字符和有限的控制字符范围内取值).
‘贰’ c语言字符型和字符串型的区别
我只回答一下你提出的问题吧.其他不懂的你可以再跟我联系.
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)
‘叁’ C语言中有string吗
C语言中没有string类型。
string类型是 C++、java、VB等编程语言中的。 在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。string 是C++标准程序库中的一个头文件,定义了C++标准中的字符串的基本模板类std::basic_string及相关的模板类实例。
而在C语言中,C语言中没有字符串类型,字符串是存放在字符型数组中的,将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'