Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的c+有什么问题+;密码_C++ - Fatal编程技术网

C++ 我的c+有什么问题+;密码

C++ 我的c+有什么问题+;密码,c++,C++,在我的书中有一个如何复制字符串(两个指针)的示例。我复制了整个代码,但当我在终端中启动程序时,它会显示“分段错误(内核转储)”>。您的程序有未定义的行为,因为您使用的是未初始化变量的值(本例中为hello指针) 您可能想将hello作为一个字符数组。如果是,请这样声明: char hello[SIZE]; 其中,SIZE是一个编译时常量,其大小足以确保数组能够容纳所有要复制到其中的字符。如果您的目标只是使用字符串文字初始化数组,则可以简单地执行以下操作: char hello[] = "Wha

在我的书中有一个如何复制字符串(两个指针)的示例。我复制了整个代码,但当我在终端中启动程序时,它会显示“分段错误(内核转储)”>。您的程序有未定义的行为,因为您使用的是未初始化变量的值(本例中为
hello
指针)

您可能想将
hello
作为一个字符数组。如果是,请这样声明:

char hello[SIZE];
其中,
SIZE
是一个编译时常量,其大小足以确保数组能够容纳所有要复制到其中的字符。如果您的目标只是使用字符串文字初始化数组,则可以简单地执行以下操作:

char hello[] = "Whazzap";

您的指针
hello
未初始化。这意味着它指向某个随机内存位置,您可以尝试在
cpy
函数中写入该位置。你基本上是在写你不被允许的地方

您需要通过创建
char
数组为副本分配空间,但必须确保有足够的空间来复制整个字符串


由于您似乎正在学习,我将指出这种方法充满了危险:无论您做什么,都必须确保您的写入不会超出您创建的存储的范围。请放心,C++标准库提供了安全的类来处理这类问题,所以这应该只是学习过程的一部分,而不是你在现实生活中编程所做的事情。

你应该去读一本好的C++书,这会让你开始。你在用什么书?”我想我正在用一本非常好的书——Bjarne Stroustrup(C++的创造者)的“C++编程语言”,很难与Bjarne争论。我可能会得到我的程序员的许可证拒绝:“我很怀疑,这代码,如图所示,是在“C++编程语言”。在所有方面,你真的认为这个答案将有助于OP?@ Babbon:是的。它告诉他什么是他的麻烦的来源,并且以一种广义的方式,这将有望使他在未来避免类似的问题。@bamboon Andy的答案有什么问题?@NikBougalis他的答案没有什么问题,只是像“UB”这样的词没有解释就没有帮助初学者,问题表明有一些真正的基础缺失,这个创可贴解决方案将只解决这一个问题,而不是下一个从这个问题产生的。还要注意的是,安迪后来改进了他的答案。
char hello[] = "Whazzap";