请高手说明有关C风格字符串和string的概念上的区分

菜鸡的逆袭之路 2017-01-09 12:39:01
本人C++小白,请老师们解答以下几个问题:
1.const char* ,char*,char[],char&,char&[]有什么区别?
2.指向C风格字符串的指针是否等价于指向C风格字符串中第一个字符的指针?
3.string是一个数组吗?指向string的指针是指向string第一个字符的指针吗?
4.存在C风格字符串的某种写法能和string的指针等价吗?
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-01-09
  • 打赏
  • 举报
回复
如果string里面保存的字符串中间有'\0',string::c_str()也返回不了中间有'\0'的C风格字符串。
lunat 2017-01-09
  • 打赏
  • 举报
回复
引用 楼主 qq_26761205 的回复:
本人C++小白,请老师们解答以下几个问题: 1.const char* ,char*,char[],char&,char&[]有什么区别? const char *是指向常量字符型数据的指针; char* 是指向字符型数据的指针; char[]是字符数组; char&是字符变量的引用; char&[],你应该指的是char(&)[],是字符数组的引用。 这些区别是C/C++的基础内容,与C风格字符串并没有必然的联系。 C风格字符串可以使用const char *(常量字符串)和char*(非常量字符串)来表示。 2.指向C风格字符串的指针是否等价于指向C风格字符串中第一个字符的指针? 你可以这么认为。 3.string是一个数组吗?指向string的指针是指向string第一个字符的指针吗? 在C++标准库里面string不是一个数组,它是一个实例化了的模板类。 指向string的指针不是指向string第一个字符的指针。请百度std::string查看详细成员。 4.存在C风格字符串的某种写法能和string的指针等价吗?
string::c_str或者string::data(c++11开始)返回它对应的C风格字符串。
fefe82 2017-01-09
  • 打赏
  • 举报
回复
1. 这是四种不同的类型。处理名字里有都有 char 之外,没太多相同的。 2. 是的。 注意 C风格字符串 只是一种习惯的叫法,并不是一种类型。在这种习惯下,问题中两种说法是一致的。 3. 不是。不是。 string 是一个类。 4. 不存在。

64,642

社区成员

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

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