char * p = "abc"与const char *p = "abc"

时间:2021-11-14 22:31:17

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

第一个语句会产生问题:

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

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

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

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

 const char * p;
p = "abc";

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

如:

 #include <iostream>

 using namespace std;

  int main() {
const char * p = "ab213123c";
cout << p << endl;
char a[] = "";
p = a;
cout << p << endl;
p = "";
cout << p << endl;
return ;
}

上述代码会输出:

ab213123c
12344
111

char * p = "abc"与const char *p = "abc"的更多相关文章

  1. C&sol;C&plus;&plus;中char&ast; p &equals; &quot&semi;hello&quot&semi; 和 const char&ast; p &equals; &quot&semi;hello&quot&semi;的区别

    在写代码常常都会写char * p ="hello";这样的代码,虽然不是错误,但却不建议这样用.应该加const修饰.这句话背后的内涵是什么?下面就刨根问底一下:) 这个行为在不 ...

  2. &lpar;c&plus;&plus;&rpar; int 转 string&comma;char&ast;&comma;const char&ast;和string的相互转换

    一.int 和string的相互转换 1 int 转化为 string c++ //char *itoa( int value, char *string,int radix); // 原型说明: / ...

  3. 阅读ANSI C,寻找乐趣和裨益——const char &ast;&ast;与char &ast;&ast;为何不兼容

    #include<stdio.h> void foo1(const char**p) { } void foo2(const char*p) { } int main(int argc,c ...

  4. char&ast;&comma;const char&ast;和string 互转

    1. string转const char* 1 string s = "abc"; 2 const char* c_s = s.c_str(); 2. const char*转st ...

  5. 【C&plus;&plus;】int、const char&ast;、char&ast;、char、string之间的转换

    #include "stdafx.h" #include<string> #include<vector> #include<iostream> ...

  6. const char&ast; &amp&semi;&amp&semi; string &amp&semi;&amp&semi; String&Hat; 类型转换

    const char* && string && String^ 类型转换 const char* ---> string const char * cw= &q ...

  7. char&ast;,const char&ast;和string 三者转换

    1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua&quo ...

  8. const char&ast;、char&ast;、char&ast; const、char&lbrack;&rsqb;、string的区别

    1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改). 2. ...

  9. const char &ast; 的终结贴&lpar;看完无需其他任何文章&comma;从此不再蛋疼&rpar;

    我之前也是以为我对const char *ptr 这种形式的写法是掌握了的,真的,不就是说一个指针是不可改变的吗? 那么问题就来了,到底是ptr指针本身不能改变,还是ptr执行的值不能改变呢? 从网上 ...

随机推荐

  1. SQL&percnt;NOTFOUND

    异常相关: 源地址:https://zhidao.baidu.com/question/215737667.html EXCEPTIONwhen others thenrollback;dbms_ou ...

  2. discuz模板文件列表

    template/default/common模板公共文件夹,全局相关     |--block_forumtree.htm 树形论坛版块分支js文件     |--block_thread.htm特 ...

  3. netty 粘包问题处理

    netty 粘包问题处理 key words: netty 粘包 解包 半包 TCP 一般TCP粘包/拆包解决办法 定长消息,例如每个报文长度固定,不够补空格 使用回车换行符分割,在包尾加上分割符,例 ...

  4. 利用WinDriver开发PCI设备驱动程序

    摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发.作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果.从 ...

  5. MongoDB备份和恢复

    mongodump备份数据 该命令可以导出所有数据到指定目录中, 也能通过参数指定备份服务器 mongodump -h dbhost -d dbname -o dbdirectory dbhost: ...

  6. Python内置函数&lpar;1&rpar;——abs

    英文文档: abs(x) Return the absolute value of a number. The argument may be an integer or a floating poi ...

  7. Core官方DI解析&lpar;3&rpar;-ServiceCallSite&period;md

    上一篇说过在整个DI框架中IServiceProviderEngine是核心,但是如果直接看IServiceProviderEngine派生类其实看不出也没什么东西,因为这个类型其实都是调用的其它对象 ...

  8. GIT与SVN的比较

    Git: 1. 分布式版本控制2. 不需要网络,本地就可以操作版本控制3. 可以是公用的,可以分享4. 不依赖于*服务器,即使服务器有问题也不会有影响5. 传输方式不一样,git要比svn快很多6. ...

  9. POJ2115 C Looooops 扩展欧几里德

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2115 题意 对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次 ...

  10. 洛谷P1144 最短路计数(SPFA)

    To 洛谷.1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M ...