zoukankan      html  css  js  c++  java
  • c/c++字符串定义及使用的对比

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

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

    1、char *p="hello";

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

    3、string s="hello";

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

    如:

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

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

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

    *注意一下情况:

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

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

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

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

  • 相关阅读:
    WSAAsyncSelect模型的小i例子
    网络编程之Winsock2
    网络编程系列之Winsock
    网络编程系列之前言
    winpcap 编程及环境配置
    inno setup 一款强大的安装包制作工具
    创建windows服务程序
    python模块之logging
    ABOUT ME
    [省选联考 2020 A 卷] 树
  • 原文地址:https://www.cnblogs.com/zlgxzswjy/p/5432718.html
Copyright © 2011-2022 走看看