首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中声明字符串

如何在C++中声明字符串
EN

Stack Overflow用户
提问于 2012-01-05 02:55:54
回答 4查看 438.3K关注 0票数 118

有人能给我解释一下这几行代码有什么区别吗?

char *p = "String";
char p2[] = "String";
char p3[7] = "String";

在什么情况下,我应该使用上面的每一个?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-05 03:00:00

This link应该能满足你的好奇心。

基本上(忘记你的第三个不好的例子),1和2的不同之处在于1为指向数组的指针分配空间。

但在代码中,您仍然可以将它们作为指针进行操作--唯一的问题是,您不能重新分配第二个指针。

票数 48
EN

Stack Overflow用户

发布于 2012-01-05 03:03:49

C中的字符串表示为字符数组。

char *p = "String";

根据C编程语言2版,您声明了一个指向存储在程序中某个位置的字符串的指针(修改此字符串是未定义的行为)。

char p2[] = "String";

您声明了一个用字符串" string“初始化的char数组,将计算数组大小的工作留给了编译器。

char p3[5] = "String";

您声明了一个大小为5的数组,并使用"String“对其进行了初始化。这是一个错误,因为"String“不适合5个元素。

char p3[7] = "String";是正确的声明('\0‘是c字符串中的终止字符)。

http://c-faq.com/~scs/cclass/notes/sx8.html

票数 48
EN

Stack Overflow用户

发布于 2012-01-05 02:58:09

你不应该使用第三个,因为它是错误的。"String“需要7个字节,而不是5个字节。

第一个是指针(可以重新分配到不同的地址),另外两个声明为数组,不能重新分配到不同的内存位置(但它们的内容可能会发生变化,请使用const避免这种情况)。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8732325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档