zoukankan      html  css  js  c++  java
  • char * p = "abc"与const char *p = "abc"

    char * p = "abc"与const char *p = "abc"的区别是什么呢?

    第一个语句会产生问题:

    warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

    此时我们只需要改成第二个用法警告就消失了,这是为什么呢?

    我们来分别理解以下两个语句,首先要清楚的是char * p语句定义的p是一个指针变量,假设我们用的是第一个语句,那么我们所表达的意思是p的地址是abc,因此会出现问题。

    而第二个语句的意思是我们定义了一个指针变量,然后改变了它指向了一个字符串常量。这样以来语句二可以拆分为两个句子,即:

    1 const char * p;
    2 p = "abc";

    我们先声明了一个指针变量,然后改变了它所指的地址,因此错误就不存在了。

    如:

     1 #include <iostream>
     2  
     3 using namespace std;
     4  
     5  int main() {
     6     const char * p = "ab213123c";
     7     cout << p << endl;
     8     char a[] = "12344";
     9     p = a;
    10     cout << p << endl;
    11     p = "111";
    12     cout << p << endl;
    13     return 0;
    14 }

    上述代码会输出:

    ab213123c
    12344
    111
  • 相关阅读:
    window/mac系统关机
    C++生成dump文件
    Qt词典搜索
    Qt将窗体变为顶层窗体
    MySql 分页
    JS之字符串与JSON转换
    简单的Map缓存机制实现
    WebSocket之获取HttpSession
    JSON格式之GSON解析
    Spring框架学习之IOC(二)
  • 原文地址:https://www.cnblogs.com/zhuangshq/p/5080966.html
Copyright © 2011-2022 走看看