gpt4 book ai didi

c++ - C++ 中奇怪的字符串运算符= 行为

转载 作者:行者123 更新时间:2023-11-28 04:29:37 24 4
gpt4 key购买 nike

<分区>

在调试其他人编写的程序时,我遇到了一个奇怪的字符串赋值。起初我很惊讶它甚至可以编译。这是一个示例,它在 Linux(Ubuntu、CentOS)上编译时没有警告。

#include <string>
#include <stdio.h>
#include <string.h>

using namespace std;

int main ()
{
string a;
char b[40];

a = "Constant value", strncpy (b, a.c_str (), sizeof (b));
printf ("a = %s\n", a.c_str ());
printf ("b = %s\n", b);

a = "Constant value";
strncpy (b, a.c_str (), sizeof (b));
printf ("a = %s\n", a.c_str ());
printf ("b = %s\n", b);
}

有人可以解释一下,示例中的第一个字符串赋值到底是什么,我在哪里可以找到描述此行为的引用资料?如你所见,a 被分配了一个常量字符串,但之后有一个逗号 (,) 和 strncpy 函数调用,它返回 字符*。为什么那里接受逗号?根据输出,如果我使用 ;, 没有区别。

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