gpt4 book ai didi

c++ - C++中指针的行为

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

<分区>

Possible Duplicate:
What is the difference between char s[] and char *s in C?

int main()
{
char *t1 = "Hi hello";
char t2[] = " strcat";

printf("%s", strcat(t1, t2));
}

当我运行这个程序时它给我段错误

int main()
{
char t1[] = "Hi hello";
char *t2 = " strcat";

printf("%s", strcat(t1, t2));
}

而当我运行下一个程序时,它会正常运行并显示连接的字符串。为什么会这样?

提前致谢:)

这个问题的总结 [已解决]

这个问题非常封闭。只是想添加摘要。我理解的要点是:对于以这种方式声明的变量

char *t1 = "hi hello";  

只需确保添加类型限定符 const。因为默认情况下它是只读内存。我们无论如何都不能修改数据。例如

t1[0] = "L"; 

是不允许的。以这种方式声明的变量不受我们的控制,并且将在程序的生命周期内永远存在。我们甚至无法释放该内存。

char t1[10] = "hi hello";

这样我们就可以更好地控制内存。我们被允许修改数组。每当范围消失时,分配的内存就会被释放。

char t1[] = "hi hello"; char t2[8] = "hi hello";

两个声明 t1 和 t2 非常相同,按顺序分配了 8 个字符位置。

希望我说得有道理。如果不是请编辑。 :)

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