C++ 定义字符串的区别

qwww450728 2011-08-04 11:31:16
我如下三种方式定义字符串:
char str[] = "1234";
char *str = "1234";
std::string str = "1234";
有何不同之处,求详解
...全文
121 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
只手破天痕 2011-08-04
  • 打赏
  • 举报
回复
第一种是一个char型的数组
第二种是一个指针,指向一个字符串
第三种是一个字符串,以\n结束
就想叫yoko 2011-08-04
  • 打赏
  • 举报
回复
char str[] = "1234";
可以修改str指向的值, 不能修改str的指向
str[0] = 'a'; 可以
strcpy(str, "abc"); 可以
char *p;
str = p; 不可以

char *str = "1234";
与上面这个正好相反

std::string str = "1234";
其实跟第一个差不多 用起来, 不过第一个大小限定死了, 只能5个字节
healer_kx 2011-08-04
  • 打赏
  • 举报
回复
用起来差不多。~
char str[] = "1234";
char *str = "1234";
std::string str = "1234";
jackyjkchen 2011-08-04
  • 打赏
  • 举报
回复
普通的栈内存局部变量

指针指向一个常量字符串,不能修改

STL库string类
赵4老师 2011-08-04
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧