字符串和字符串函数
1.字符串字面量(字符串常量):用双引号括起来的内容称为字符串字面量,也叫字符串常量。
字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被存储一次,在整个程序的生命期内存在,计时函数被调用多次。
用双引号括起来的内容被视为指向该字符串存储位置的指针。*“hello”中的“hello”类似于一个数组名,表示首元素的地址。
2.字符串数组和初始化
在定义一个字符串时,注意最后要用空字符,如果没有空字符,就不是一个字符串,而是一个数组。但计算一个字符串的长度时,并不包含这个空字符。
字符串以数组的形式存在,以数组或指针的形式访问,更多的是以指针的形式访问。
字符数组名和其他数组名一样,是该数组首元素的地址。可以用下列方式创建字符串:
指针表示法: char *pr="hello" ;
数组表示法: char pr[ ]="hello" ;
那char*是不是字符串?不一定,只有当他所指的字符数组结尾有空字符时,它才是字符串。
3.数组和指针的区别
char a[ ]="hello";
const char *b="hello";
两者的主要区别是:数组名a是常量,而指针名b是变量。
因此不能改变a的值,可以进行a+1的操作(指向下一个元素的地址),但不能进行a++;的操作。
但b可以如++b,表示指向第二个字符。
字符串字面量被视为const数据,这意味着b不能改变它所指向的数据,但仍然可以改变b的值。