C++ 使用指针复制 char*

标签 c++ arrays pointers char

我正在尝试掌握指针,并且我有这个简单的代码,我需要一些解释。

我需要将一个字符数组复制到另一个。在我的主函数中,我有以下代码:

const int MAX_SIZE = 100;

char x[MAX_SIZE] = "1234565";
char* y = new char[MAX_SIZE];

copyArray(x, y);    
std::cout << y;

delete [] y;

现在问题来了,这段代码是如何工作的(工作得很好):

while ((*dest = *source) != '\0')
{
    dest += 1;
    source += 1;
}

与此不同(最后给出奇怪的字符):

while (*source != '\0')
{
    *dest = *source;

    dest += 1;
    source += 1;
}

看起来这两个函数非常相似。 我们进行复制直到到达源字符串中的空终止符为止是有意义的,对吧(第二个函数)?

但它无法正常工作 - 我在复制的数组末尾收到一些奇怪的字符。然而,第一个函数工作得很好。

void copyArray(const char* source, char* dest);

最佳答案

表格

while ((*dest = *source) != '\0')
{
    dest += 1;
    source += 1;
}

如果终止 '\0' 字符是,则保证在测试条件之前应用要复制的字符 ((*dest = *source)) 的分配达到的值被评估为false

第二个版本不会复制终止'\0'字符,因为循环在

之前结束
*dest = *source;

声明已达成。

关于C++ 使用指针复制 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47423948/

相关文章:

C++ ifstream::read 混淆

c++ - 无法启用 Vulkan 时间线信号量扩展

c# - 不安全的性能 C#,删除 long 转换为 int 以访问数组索引

python - 从数组中提取最长的非 NaN 序列

c - 将相同的结构成员分配给其他成员时,c 中的分配类型不兼容

c - 如何将指针打印到指针

c++ - 使用 C++/Gmock 在中间模拟

c++ - 是否可以将 gsl_matrix 存储在 C++ vector 中?

c++ - 类的继承变量和自身变量的区别

Javascript reduce push individual sums + final sum