zoukankan      html  css  js  c++  java
  • 字符指针、字符数组

    1.字符指针

    https://blog.csdn.net/qq_43668570/article/details/98980446

    指向字符型数据的指针变量。每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址。

    即将字符串的首地址赋值给字符指针可让字符指针指向一个字符串

    如下:

        char* p1="abc";
        char* p2="abc";
        cout<<(p1==p2)<<endl;//1
        cout<<p1<<" "<<p2<<" "<<endl;//abc abc
        cout<<*p1<<" "<<*p2<<" "<<endl;//a a 
       cout<<&p1<<" "<<&p2<<endl;//0x62fe18 0x62fe10

    对指针取内容,是首个字符;对指针取地址,获取到了指针的地址。

    一般来说,不是要取内容*才能获取到内容吗?这里直接输出p1和p2就可以获取到内容了?

    对int型数字来说:

        int* p1=new int(5);
        int* p2=new int(5);
        cout<<(p1==p2)<<endl;//0
        cout<<p1<<" "<<p2;//0x2522560 0x2522580
    cout<<&p1<<" "<<&p2<<endl;//0x62fe18 0x62fe10
    cout<<*p1<<" "<<*p2<<endl;//5 5

    直接输出p1和p2是输出的地址,它们所指向的堆内存的地址,只有用了取内容符号之后才会输出所指内存的内容。

    char str[10] = "Hello";
    char *ptr = str;//数组名代表数组的首地址
    //等价于
     char *ptr;
     ptr = str;//等价于ptr = &str[0];将数组的首地址赋给字符指针ptr

    2.是否添加?

    https://blog.csdn.net/wuwuku123/article/details/103608918

    这种方法定义时,系统会自动在字符串的末尾加上字符串结束符,即 ‘’,:

    char str[]="12345";//sizeof(str)为
    char str[]={"12345"};//6
    char str[6]="12345";//6

    这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为,如上面的数组str中的元素实际上是:'1','2','3','4','5','','','','',''

    char str[10]={'1','2','3','4','5'};

    系统不会自动在字符串的末尾加上字符串结束符;

    此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过判断字符串结束的。

    char str[]={'1','2','3','4','5'};

    所以,采用该方法定义时,一般人为地加上,即char str[]={'1','2','3','4','5', ''};

    char str[]={'1','2','3','4','5', ''};
    
    char str[6]={'1','2','3','4','5'}; //故意给数组预留一个空位
    
    char str[]={“12345”};//第一行手动添加后和当前效果相同
  • 相关阅读:
    实现货币金额中文大写转换的程序
    大数阶乘的计算(三)
    全国15亿人口中选1000个代表有多少种选法?
    DB Query Analyzer 中断SQL语句的执行
    Android_Preference存取数据
    Centos 学习笔记软件包管理
    Centos学习笔记文件搜索命令
    《计算机时代》2011年第12期刊登出《DB Query Analyzer中断SQL语句的执行》
    Centos学习笔记linux用户管理
    Centos学习笔记 linux 常用命令:压缩解压命令
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/15267433.html
Copyright © 2011-2022 走看看