zoukankan      html  css  js  c++  java
  • 指针与字符串

    正确

    char *s;

    s=“MJ”;
     
    错误:
    char s[10];
    s="MJ”;
    因为s是个常量,代表数组的首地址,不能进行赋值运算。
    1、char *s=“MJ”;
    3、*s="like”;
    • 第3行代码相当于把字符串"like"存进s指向的那一块内存空间,由第1行代码可以看出,s指向的是"mj"的首字符'm',也就是说s指向的一块char类型的存储空间,只有1个字节,要"like"存进1个字节的空间内,肯定内存溢出
    • 由第1行代码可以看出,指针s指向的是字符串常量"mj"!因此是不能再通过指针来修改字符串内容的!就算是*s = 'A'这样"看起来似乎正确"的写法也是错误的,因为s指向的一个常量字符串,不允许修改它内部的字符。
    1 char *p2 = "lmj";
    2 *p2 = 'L';
    3 
    4 printf("%s", p2);
    
    

    看起来似乎是可行的,但这是错误代码,错在第2行。首先看第1行,指针变量p2指向的是一块字符串常量,正因为是常量,所以它内部的字符是不允许修改的。

    有人可能搞蒙了,这里的第1行代码char *p2 = "lmj";跟第一种方案中的第2行代码char a[] = "lmj";不是一样的么?这是不一样的。

    • char a[] = "lmj";定义的是一个字符串变量!
    • char *p2 = "lmj";定义的是一个字符串常量!
  • 相关阅读:
    select 1 from ... sql语句中的1代表什么意思?
    装饰者模式
    Dao层抽取BaseDao公共方法
    DBUtils工具类
    java Page分页显示
    QTP
    Gym 100513F Ilya Muromets(前缀和)
    AcWing1165 单词环(01分数规划)
    AcWing904 虫洞(spfa判负环)
    AcWing1148 秘密的奶牛运输(次小生成树)
  • 原文地址:https://www.cnblogs.com/Alling/p/3971441.html
Copyright © 2011-2022 走看看