C++——C风格字符串

C语言中没有原生的string类型,应用char数组或是char指针来代替

一个字符串有如下几种方式来表示和初始化

第一种

 char array[4] = {'a','b','c'};

字符串是从char数组的开头开始,一直到首次读到的'\0',也就是空字符为结束。所以若要用char数组来表示字符串,一定要记得带'\0',否则这个字符串的结尾会到处乱跑。我们可以显式地加上’0‘,也可以把最后一个位置留空,默认初始化为'0'

第二种

const char *ptr = "abc";

用""来包裹一段字符串时,我们叫这段字符串string literal,""代表着取这段字符串的地址,并且自动在字符串最后加了0,指针就指向这块内存的首地址

值得注意的是,这个指针最好(但没有硬性要求)声明为const,因为string literal不能被更改,故意更改会得到segmentation fault

第三种

char array[4] = "abc";

第三种与第二种不同的是,用string literal初始化char数组时,发生了拷贝操作,把string literal的内容从原来的地址,拷贝到了数组的地址,所以实际上现在我们有两份同样的字符串。在数组的地址下,我们就可以随意对字符串继续修改,而不像第二种一样被限制,但是要注意拷贝会带来性能损耗

posted @ 2021-12-27 21:39  wcvanvan  阅读(407)  评论(0)    收藏  举报