您现在的位置:文学 > 西方文学

字符串常量和字符串变量

时间:2019-06-16 10:34   编辑:本站

字符串常量和字符串变量

字符常量是由一对单撇号括起来的单个字符,如a、C、?,$。 在C语言中,除了字符常量还有字符串常量以及字符串变量,先来讲一下字符串常量的个人理解:(1)常量本质在于不可更改,而字符串常量是就是一对双引号括起来的字符序列常量。

例如hellowordC语言中规定,在每一个字符串常量的结尾,系统都会自动加一个字符\0作为结束标志符。 而\0在ascii码中为0字符,不起任何控制作用,也不是一个显示的字符。

不过在计算字符常量的内存大小时,双撇号内有n个字符,那么内存大小为n+1个字节。

(2)字符串变量,值得注意的是字符串常量不能赋给一个字符变量,字符串是一连串字符,而字符变量仅可以存储一个字符,而且字符串并不属于数据类型,故C语言中任何数据类型的变量都不能直接存储一个字符串,那么字符串如何存储?C语言中有两种存储字符串的方式,一种是通过字符数组存储,一种是通过字符指针存储。 C语言中通常使用字符数组作为字符串变量来存放一个字符串,数组中每一个元素存放一个字符,例如chara[10]=love。 上例其中a[10]作为存储字符串常量love的字符数组,而字符数组也被字符串love初始化其内存空间。 而字符数组名就是其存储的字符串常量首地址。 另外,字符指针存储其实质是将字符串首地址赋给字符指针,并且内存位置也是以字符串首地址往后的一片内存空间。

例如:char*buf=hello,其中buf为字符串首地址,字符串存储为buf地址开始的连续内存空间,可以使用buf++遍历字符串。

值得注意的一点是*buf为指向字符串首地址内容,即字符h所在地址。 若想输出打印字符串,使用buf++遍历是一种,也可以利用字符串首地址以字符串格式输出打印,例如:printf(%s,buf);。