gpt4 book ai didi

C++ 使用指针复制 char*

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:34 25 4
gpt4 key购买 nike

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

我需要将一个字符数组复制到另一个。在我的主要功能中,我有这段代码:

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)) reached 被评估为 false

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

之前结束
*dest = *source;

永远达成声明。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com