使用指针进行数组到数组复制

Array to array copying using pointers

本文关键字:数组 复制 指针      更新时间:2023-10-16

我试图将一些元素从一个数组复制到另一个数组,在某种程度上它确实有效,但当指针只指向一个元素时,它会复制整个数组。这是代码:

char buffer[64], buffer1[2];
char* pointer;
strcpy(buffer, "Word");
pointer = buffer1; 
*pointer = buffer[0];
printf("%cn", *pointer);
printf("%sn", buffer1);

当我打印*指针到控制台,我得到"W",但当我打印buffer1到控制台,我得到"WÌÌÌÌÌÌÌÌÌWord",这是怎么可能的?它只能取两个元素?

这怎么可能?它只能取两个元素?

是的,这两个元素打印成功了。

然而,由于这两个元素都不是'', printf不知道它已经到达了数组的末尾(它怎么知道?!)并继续从计算机的内存中读取,直到它到达某个地方的

在某种程度上是有效的,但是当指针只指向一个元素

时,它会复制整个数组

指针只能"指向一个元素";当你使用"%s"这样的printf格式化器时,这是一个字符串,语言假设所述元素旁边有其他元素(例如,在数组中),它将继续增加指针并打印,直到它找到一个''告诉它停止。

简而言之,您占用了缓冲区

在C中,确保你为终止NULL字节留下足够的空间;在c++中,使用std::string:

const std::string buffer  = "Word";
const std::string buffer1 = buffer;
std::cout << buffer[0] << 'n' << buffer1 << 'n';