首先看2个表达式
char str1[] = ...{’a’,’b’,’c’,’d’};
char *str2[] = ...{\"a\",\"b\",\"c\",\"d\"};
这2个哥们儿长的很像,可实际的涵义确差老了。2个都是C里面的东东。
str1叫字符数组,首先它是一个数组,5个元素但长度为4 (加上个\\0)其实就相当于“abcd”。看看怎么变过来的:
首先变为char str1[ ] = {\"abcd\");然后把括号去掉就是 char str1[ ] = \"abcd\",和C++里面初始string对象一样
在C++里面你可以这么用 string s(str1)或string s = str1 就相当于string s(\"abcd\")对s进行初始化,反正就是一句话,可以把一个字符串数组看成一个字符串常量。另一种高级的玩法的是
string s(str1,hello + strlen(str1)) 要知道在C++里面数组的指针也就是str可以看成指向其本身的的迭代器。
str2 有点麻烦,两兄弟最不像的地方就是引号,一个单一个双。这就是关键了!!单表示字符,双表示字符串,字符串是什么,刚才已经说过了,它是数组。这下就哦了,不就是数组的数组么,说白了就是个2维数组,在白点就是一个指针的指针,所以可以用char** p指向它,