gpt4 book ai didi

c++ - 堆栈数组 C++ 的 Strcpy 行为

转载 作者:行者123 更新时间:2023-11-28 01:13:55 24 4
gpt4 key购买 nike

这是我的程序:

#include <cstring>
const int SIZE =10;

int main()
{
char aName [SIZE]; // creates an array on the stack
std::strcpy(aName, "Mary");
return 0;
}

这个程序显然没有用,我只是想了解 strcpy 函数的行为。

这是它的签名:char * strcpy (char * destination, const char * source)

所以当我这样做时:std::strcpy(aName, "Mary");

我正在按值传递变量 aName。我知道 aName(主要)包含数组的地址。那么这个断言是否正确:strcpy 创建了一个名为 destination 的局部变量,其值是我在 main 函数的堆栈上创建的数组 aName 的地址?

我问这个是因为它让我很困惑。每当我遇到地址时,通常是指向分配在...

上的内存

谢谢!

最佳答案

无论何时遇到地址,并不意味着它总是指向分配给堆的内存。

你可以像这样把一个变量的地址赋值给一个指针

int a=5;
int *myPtr= &a;

现在,myPtr 是一个整数类型的指针,它指向在堆栈 上创建的变量的内存,这是a 具有值5.

因此,每当您创建一个指针并使用 new 关键字分配内存(地址)时,它都会在 上分配内存。所以,如果我像这样分配值,它将在堆栈上

int *myPtr= new int[5];

关于c++ - 堆栈数组 C++ 的 Strcpy 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59361254/

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