1、当一个char型指针指向一个字符串字面量(也就是常量字符串)时,该指针必须由const修饰,否则,系统会给出deprecated(不赞成)的警告。原因是:字符串字面量不可改变,当它被一个非const修饰的指针指向时,存在被指针改变的风险。

2、char型指针指向一个字符数组时,没有const限制,因为字符数组可以被改变。但是,如果我们不需要指针来改变字符数组时,我们最好加上const修饰,来限制指针的行为,减少出错的概率。

3、例子:

#include <cstdio>
int main(){
char *p;
p="where";
puts(p);
return ;
}
编译后:t3.cpp: In function ‘int main(int, char**)’:
t3.cpp::: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
p="where";
^
#include <cstdio>
int main(int argc, char *argv[])
{
const char *p;
char c[]="where are you";
p=c;
puts(p); return ;
}
//该程序换为数组,则没有任何问题

char型指针和字符串字面量和字符数组的更多相关文章

  1. C内存对齐问题-bus error!总线错误!其实是 字符串字面量修改问题!

    最近写个小程序,出现bus error! int main(void) { /** * char :1个字节 * char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也 ...

  2. ISO/IEC 9899:2011 条款6.4.5——字符串字面量

    6.4.5 字符串字面量 语法 1.string-literal: encoding-prefixopt    "  s-char-sequenceopt  " encoding- ...

  3. char型指针与其它指针或数组的细节

    一道常见题 char * str7="abc"; char * str8="abc"; cout<<(str7==str8)<<endl ...

  4. QT_NO_CAST_FROM_ASCII这个宏的,禁用一切来自双引号字符串字面量传入QString(有2种解决方法)

    这两天制作了两个Qt Creator增强套装的两个插件,其实也是非常简单的,但是其实花了我超过四天的时间,为什么呢?因为我之前很长一段时间都是在Linux下开发的,一切安好,没有任何问题,但是到了Wi ...

  5. 【译】Java中的字符串字面量

    原文地址:https://javaranch.com/journal/200409/ScjpTipLine-StringsLiterally.html 作者:Corey McGlone 让我们由一个简 ...

  6. js 正则学习小记之匹配字符串字面量优化篇

    昨天在<js 正则学习小记之匹配字符串字面量>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯后用 [^"] 才能匹配成功 ...

  7. c#字符串字面量

    分为两种: 1 常规字符串字面量 2逐字字面量字符串:以@字符为前缀.注意:注意逐字字面量唯一例外的是相邻的双引号组,它们被解释为单个双引号字符.

  8. Typescript 字符串字面量类型

    字符串字面类型定义的类型是固定的,在其使用时必须是其定义的其中一个字符串,否则会报错 当传入一个定义之外的字符串时,会报错字符串字面量类型.ts(13,20): error TS2345: Argum ...

  9. JavaScript对象的理解 及 字面量对象与数组的关系

    JavaScript的简单类型包括 数字.字符串.布尔值.null值.undefined值. 其他的值都是对象.对象是可变的键控集合.数组.函数.正则表达式都是对象. 对象是属性的容器,属性都是名字和 ...

随机推荐

  1. ES6学习笔记六:迭代

    一:迭代器 它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). ES6创造了一种新的遍历命令for. ...

  2. Linq to Entity 求最大小值Max/Min返回null的处理方法

    var maxId=db.user.Select(u=>u.CId).DefaultIfEmpty() 如果maxId返回null则maxId.Max()的值为0

  3. vs2017莫名自动退出调试状态可以尝试一下如下的方法

  4. 用Beautiful Soup解析html源码

    #xiaodeng #python3 #用Beautiful Soup解析html源码 html_doc = """ <html> <head> ...

  5. 转 linux Crontab 使用

    cron用法说明 cron的用法老是记不住,索性写下来备忘.下文内容大部分是根据<Cron Help Guide>翻译而来,有些部分是自己加上的. 全文如下: cron来源于希腊单词chr ...

  6. BigDecimal去除末尾多余的0

    Java有自带的 stripTrailingZeros() 方法用于去除末尾多余的0 BigDecimal num = new BigDecimal("100.000"); Big ...

  7. Maven2和ivy比较

    Maven 2和Ivy常被放在一起对比,但实际上两者是不同类型的工具.Ivy仅提供依赖管理功能,但是Maven 2是一个软件项目管理综合工具,能够管理构建.报告.文档,以及根据中心化的信息来管理依赖. ...

  8. Android tesseract-orc之扫描身份证号码

    踩了不少坑,终于把这个扫描版的身份证识别做出来了,图片识别引擎用的是tesseract,在已经训练好样本的情况下,感觉识别率还是一般般~ 下面说一说大概几个坑. 一. 编译tesseract-orc ...

  9. easyui按钮linkbutton 不可用(置灰)与 可用(取消置灰)

    easyui linkbutton按钮: 不可用(置灰) $('#butFree').linkbutton('disable'); 可用(取消置灰) $('#butFree').linkbutton( ...

  10. Android MediaPlayer和VideoView的使用

          MediaPlayer MediaPlayer类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频.它支持三种不同的媒体来源: 本地资源 内部 ...