Pammer 发表于 2020-4-11 19:48

字符串合成之后为空

#include<iostream>

using namespace std;

void ab(const char* a);

int main()
{
      char a = '5';
      ab("1234" + a);
      return 0;
}

void ab(const char* a)
{
      cout << a << endl;
      return;
这为什么不会输出“12345”?

古月不傲 发表于 2020-4-11 20:07

"1234"是一个静态地址 加上一个偏移量 然后你懂了吧{:301_1004:}

我的爱是你 发表于 2020-4-11 20:07

本帖最后由 我的爱是你 于 2020-4-11 20:09 编辑

事实上那输出了一个不可显示的空白符合,不信你把a = '0' 这样你就看到见了。
综上所述c++不支持或不知晓如何直接用char* 进行+字符操作,你这是违规操作 输出为随机或垃圾的数据指针。   
而string 重载了 + 运算符所以可以 进行 str +" "字符的操作。

a251633620 发表于 2020-4-11 20:11

感谢分享!!!!!!!!!!
页: [1]
查看完整版本: 字符串合成之后为空