首先,我必须声明我是 C++ 和整体编程的初学者。 我将开门见山。我想知道是否可以将任意大小的字符串分配给指向字符的指针(不是数组,只是一个 char * 指针)。那会违反任何内存地址吗? 我正在学习的书似乎对此没有任何说明。我似乎也无法在 Google 上找到任何内容。
最佳答案
你有你的字符指针并想动态创建 C 字符串
char *str;
说。该指针将用于指向字符串的第一个字符。字符串是内存中的一系列连续字符(字节)。我们要在内存中实现什么:
str -> +---+---+---+---+---+----+
| H | E | L | L | O | \0 |
+---+---+---+---+---+----+
注意最后一个字节 - 这个字节的值为 0 并且称为空字符 - 它代表字符串的结尾并且让人很容易知道我们何时到了结尾。
要给 str
一个值,需要分配这 block 内存。在 C++ 中,这是由 new operator
像这样完成的
str = new char[6];
注意 new 有两个版本 new[] 和 new - 一个是分配对象数组,另一个是分配单个对象。当你用 new[] 分配它时,总是使用 delete[],同样应该使用 new/delete。不要混用 new[] 和 delete,以及 new 和 delete[]
这将分配一个包含 6 个字符的数组来放置字符串。要将字符放入我们冷的字符串中。
str[0] = `H`;
str[1] = `E];
...
str[5] = 0;
但这会很乏味。相反,我们可以使用 strcpy为我们做这件事:
strcpy(str, "hello");
它知道所有关于空字符的信息。有一系列函数可以对这些类型的字符串进行操作 - 请参阅 string
这是 C 字符串。曾几何时,有人发明了一种名为 C++ 的新语言。这种语言使用了一种不同的想法,称为对象,使这些东西变得容易得多。您需要查看标准模板库(或 STL)。关于这些字符串的注释可以在 string 找到。 . STL 中有很多好东西 - 这是引用 STL
希望对你有帮助
关于c++ - 将任意大小的字符串分配给指向 char 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9450654/