C语言中字符串的定义
如果定义一个字符数组word,并使用大括号对其初始化,如下图所示:
但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算。那么C语言的字符串长什么样呢?如下图所示:
那么上述两个定义有何区别呢?区别就是C语言字符数组初始化时的最后一个字符加入了一个特殊的东西,就是‘\0’,这个符号的意思就是整数0,这里去掉单引号和斜杠,只放0也是可以的。这个字符数组总共有7个元素,最后的这个0使得这个数组就是C语言的字符串,那么这个字符串就可以使用c语言字符串的运算。
所以,对于C语言来说,字符串是指以0结尾的一串字符,结尾0和'\0'是一样的,某些情况下会强调使用'\0',因为整数0认为是int,一般占用4个字节,而'\0'一定是一个字节。但是不可以使用'0','0'是一个字符,这个字符是ascii码中的0,\0中的0是整数0,这两个是不一样的。
字符串末尾的0有什么含义呢,0标志字符串的结束,表示字符串到此为止,接下来的就不属于该字符串的内容,但是0本身并不是字符串的一部分。再接下来对字符串进行操作的时候就可以看到这个0的作用,字符串需要一个标志来表示说字符串结束了,这样程序才能写得出来。既然0不是字符串的一部分,那么计算字符串长度的时候不包含这个0。
C语言中字符串的存在形式
在C语言中字符串是以数组的形式存在的,而进行访问(读写)的时候可以是数组也可以是指针。在上一节课说数组和指针的关系时说过,指针和数组具有天然的联系,可以以指针的形式去访问或者遍历一个数组,也可以以数组的形式去访问指针所代表的那一大片连续的地址空间。数组和指针有着这种联系,字符串在内存里的表达形式是数组,那么访问字符串时可以使用指针也可以使用数组,指针居多一些。
C语言中字符串变量
定义字符串变量有下列几种不同的写法,但是首先要理解的是字符串是数组,那么这些变量都是字符数组的变量,只不过有不同的表现形式:
1 char *Str = ”hello“; 2 char word[] = "hello"; 3 char line[10] = "hello";