从C++里的一大堆字符串说起
写数据库管理系统时遇到了不少关于C++字符串的问题,要命的是C++的字符串种类实在是太多了,今天试着搜集一些资料总结一下。
¶char foo[bar] 和 char* foo
char foo[bar]这种形式被称为“C风格字符串”,它是从C语言中流传下来的。它实际上完全就是char型的数组,只是你可以用这样的方式来给它赋值,看上去比较像“字符串”:
//这两行都定义了相同的字符串"Hello"
char foo1[] = "Hello"; //末尾有隐藏的'\0'
char foo2[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
char* foo是声明了一个字符指针,指向单个字符,可以将其当作以'\0'为末尾的字符串的首字符地址。如果要把字符串赋给它,需要先申请内存空间,再使用memcpy()或strcpy()。当然,也可以不分配空间,直接用十分危险的指针赋值。
char* foo1 = (char*)calloc(6, sizeof(char));
strcpy(foo1, "Hello");
char* foo2 = "Hello";

