字符串常量

来源:互联网 发布:VB中改变窗体颜色属性 编辑:程序博客网 时间:2024/04/28 10:25
字符常量是由一对单引号括起来的单个字符。不能将字符串常量与字符常量混淆。字符常量可以赋值给字符变量,如"char b='a';",但不能把一个字符串常量赋给一个字符变量,同时也不能对字符串常量赋值!
 
(1)含义
字符串常量是一对双引号括起来的字符序列。例如下面的是合法的字符串常量:"how do you do.","CHINA","a","$123.45"
存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空字符‘ \0’自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占(n+1)个字节可以输出字符串,例如:printf("how do you do.");
 
(2)与字符常量的比较
C语言允许使用字符串常量外,还允许使用字符常量。
 
(3)与字符数组的关系
在C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。例如“char a[10]="love".
 
(4)与指针的关系
在程序中,字符串常量会生成一个“指向字符的常量指针”。当一个字符串常量出现于一个表达式中时,表达式所使用的值就是这些字符所存储的地址,而不是这些字符本身。因此,你可以把字符串常量赋值给一个“指向字符 的指针”,例如:char *a = "123" ; a = "abc";,后者指向这些字符所存储的地址。但是,你不能把字符串常量赋值给一个字符数组,因为字符串常量的直接值是一个指针,而不是这些字符本身。例如:char a[5];a[0] = "a";就是错误的,报错结果:invalid conversion from 'const char*' to 'char'。例如:char a[10]="love",的意思就是用字符串“love”来初始化字符数组a的内存空间,而数组的首地址也就是“love”字符串的地址。
 
(5)字符串指针的初始化
char *a="china";等价于char *a;a="china";char *a="china";这个语句的释义是:声明一个字符指针a,该指针指向常量区字符串"china"的首地址,而char *a;*a="china";这个是错误的,*a标示的是一个字符值,*a="china";会产生一个字符串数据向字符数据赋值的error。
0 0
原创粉丝点击