c++ - 将任意大小的字符串分配给指向 char 的指针

标签 c++ char

首先,我必须声明我是 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/

相关文章:

Python 字符数组声明

c - 如何获取 *chars 并返回非整数?

c++ - const 成员函数需要说明

c++ - 在结构中的数组中初始化结构中的数组时出现问题

c++ - Qt 部署找不到我的库,但 ldd 可以

c++ - Cython c++ 示例无法识别 c++,为什么?

C: 扭曲字符 *

c++ - 将进程锁定到 Cuda 核心

c - 在结构上使用 strncpy

C char 在 if..else 中不起作用