c/c++中使用字符串的频率还是比较高的,下面就字符串的不同定义及其使用方法做一些对比

字符串一般有以下三种定义方法:

1、char *p="hello";

2、char str[6]="hello";

3、string s="hello";

【第一种字符串】:这种定义方式会被编译器默认为字符串常量,自行默认为是不会被改变的,所以编译时会被存储在一个只读的数据段中,尝试对这种类型字符串的改变是不被允许的。

如:

char *p="hello";
p[]='x';

这个时候,输出字符串就会爆出"段错误"(我这里的实验平台是linux,会和windows有所不同),因为修改了内存只读区域,这是不允许的;

【第二种和第三种字符串】:这种定义方式实际上是把存在只读数据段中的字符串复制到了一个字符数组中,这种字符串中的任意字符都可以被随便改变,这里不再做出演示。

*注意一下情况:

char *str1="hello";
char *str2="hello";

这个时候,str1和str2指向的其实是同一个内存地址,可以用一下语句进行验证:

if(str1==str2)
cout<<"str1=str2"<<endl;

*linux下定义字符串爆出warning的处理方法:在定义字符串时加上const限定修饰符,告诉编译器这是常量,否则g++/gcc都会认为是变量,所以会爆出warning

c/c++字符串定义及使用的对比的更多相关文章

  1. C语言字符串定义(数组&指针)

    /***************************************************************************** * @brief : 字符串定义方法总结 ...

  2. Python基础笔记系列七:字符串定义和访问

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串定义和访问 1.字符串基础 a.字符串可以用单引号.双引号.三引号( ...

  3. sh_14_字符串定义和遍历

    sh_14_字符串定义和遍历 str1 = "hello python" str2 = '我的外号是"大西瓜"' print(str2) print(str1[ ...

  4. python通过字符串定义函数名

    记录python里的一个有意思的小技巧:通过字符串定义函数名称. import sys m=sys.modules[__name__] def temp(x): return x+1 setattr( ...

  5. JAVA中字符串操作几种方式对比

    @参考文章 方法及原理: 方法1:a=a+b实际上另开辟一个空间c=a+b;然后将c的引用赋给a 方法2:a += b实际上是建立一个StringBuffer,然后调用append(),最后再将Str ...

  6. R语言学习笔记(二十二):字符串处理中的函数对比(代码实现)

    字符串处理中基本函数的使用 R自带函数与stringr包函数对比 > states <- row.names(USArrests) > # 提取字符串子集 > substr(x ...

  7. 001——php字符串中的字符串定义

    <?php /** * 一.定义字符串: * ''单引号 ""双引号 <<<定界符 */ /* $url='http://baidu.com'; $baid ...

  8. Java字符串定义及常用方法

    String.StringBuffer和StringBuilder   String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的.   Stri ...

  9. [c语言]字符数组、字符串定义

    C语言中字符串通常用字符指针和字符数组来定义: char* pS="abcdef"; char s[]="abcdef"; 这两种方式都会在结尾为字符串隐式补结 ...

随机推荐

  1. Cache,MemCache,Application,Cookie等其它缓存汇总

    为了提高网页运行速度我们用到了各种缓存技术,今天就来汇总下,相信聪明的你也一定会有所收获的o(^▽^)o 1.Cache(PS:看见一个博客介绍的不错,我就直接Copy了) Cache 即高速缓存.那 ...

  2. SVN合并代码

    分之合并主干代码, 修改冲突后提交, 更新本地代码, 主干合并分之,

  3. MFC用户自定义消息

    之前做过佳能相机和位移平台的额二次开发,当时遇到一个棘手的问题,就是位移平台如何知道相机已经拍完照了,或者相机如何知道位移平台已经运行到指定位置,当时为了方便采用了定时器来定时检测位移平台的位置,结果 ...

  4. js-JavaScript高级程序设计学习笔记19

    第22章 高级技巧 1.高级函数 1.安全的类型检测. typeof,instanceof并非完全可靠. 安全的类型检测:使用Object原生的toString()方法. function isArr ...

  5. JavaScript的学习资料

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript http://www.liaoxuefeng.com/wiki/001434446689 ...

  6. WIN10 CMD 启动虚拟WIFI

    1.以管理员身份运行命令提示符: 快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡: 运行命令:netsh wlan set hostednetwork mode=allow ssi ...

  7. C# 中的委托和事件(转)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  8. 使用count结合nvl函数时碰到的问题

    count()函数功能:统计表中中某个字段或所有记录个数,字段值为null的不做统计. 手册中解释: COUNT returns the number of rows returned by the ...

  9. Pandas-数据选取

    Pandas包对数据的常用数据切片功能 目录 [] where 布尔查找 isin query loc iloc ix map与lambda contains DataFrame的索引选取 [] 只能 ...

  10. MathType 6.9 介绍安装

    1.介绍 MathType是强大的数学公式编辑器,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号,可用在编辑数学试卷.书籍.报刊.论文.幻灯演示等方面,是编辑数学资料 ...