const char*p,char const*p,char *const p
转自 http://blog.csdn.net/todd911/article/details/7911995
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。 C++标准规定,const关键字放在类型或变量名之前等价的。
关于char **p 、const char **p的类型相容性问题
1.问题
char *p1;const char*p2=p1;//合法
char **p1;const char**p2=p1;//不合法,会有警告warning: initialization from incompatible pointer type
char **p1;char const**p2=p1;//不合法,会有警告warning: initialization from incompatible pointer type
char**p1;char*const*p2=p1;//合法
2.判断规则
明确const修饰的对象!对于指针p1,和p2,若要使得p2=p1成立,则可读做 :
“p1是指向X类型的指 针,p2是指向“带有const限定”的X类型的指针 “。
char *p1;const char *p2=p1;//合法:p1是指向(char)类型的指针,p2是指向“带有const限定"的(char)类型的指针。
char **p1;const char**p2=p1;//不合法:p1是指向(char*)类型的指针,p2是指向 ((const char)*)类型的指针。
char **p1;char const**p2=p1;//不合法;与上等价。
char**p1;char*const*p2=p1;//合法: p1是指向(char *)类型的指针,p2是指向“带有const限定"的(char*)类型的指针。
最后上一个例子:
#include <stdio.h> int main(void){ int v1 = 1; int v2 = 2; int const *a = &v1; *a = 2; int *const b = &v2; b = &v1; char**p1; char*const*p2=p1; *p2 = &v1; return 0; }
编译时出现如下错误:
const.c: In function 'main':
const.c:9: error: assignment of read-only location '*a'
const.c:12: error: assignment of read-only variable 'b'
const.c:16: error: assignment of read-only location '*p2'
转载于:https://www.cnblogs.com/QingCHOW/p/4603223.html
const char*p,char const*p,char *const p相关推荐
- int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LPTSTR”
问题描述: [cpp] view plaincopy //定义了三个编辑框控件 接受num1 num2 num3 void CTestDlg::OnBnClickedButton1() //响应按 ...
- “const char *“ 类型的实参与 “char *“ 类型的形参不兼容错误的解决方法
"const char *" 类型的实参与 "char *" 类型的形参不兼容错误的解决方法 参考文章: (1)"const char *" ...
- 关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法
关于VS2022 C++报错 const char* 类型的实参与char *类型的形参不兼容解决办法 问题来源 错误原因 解决方案 问题来源 在学习写C++代码时候,去练习课本上课后习题时候的问题, ...
- C语言编译时产生的警告:initializing ‘char *‘ with an expression of type ‘const char *‘ discards qualifiers
警告的产生: char *my_strstr(const char *str1,const char *str2) {const char *s1 = NULL;const char *s2 = NU ...
- getch()与_getch()、不能将const char*类型的值分配到const* 类型的实体
参考1:getch()与_getch() 添加预处理 项目 -> 属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理器定义 -> 编辑中添加:_C ...
- const char * 类型的实参与 char * 类型的形参不兼容_4 种 C++ 强制类型转换,你都清楚吗?...
我们先来回忆以下,C 语言的强制类型转换形式: (type) expr; 这种旧式强制类型转换从表现形式上来说不够清晰明了,容易看漏,一旦转换过程出现问题,追踪起来也就更加困难. 为了解决以上问题,C ...
- c语言中char * string,浅析string 与char* char[]之间的转换
1.首先必须了解,string可以被看成是以字符为元素的一种容器.字符构成序列(字符串).有时候在字符序列中进行遍历,标准的string类提供了STL容器接口.具有一些成员函数比如begin().en ...
- arduino int转char_将char *转换为int arduino(Convert char* to int arduino)
将char *转换为int arduino(Convert char* to int arduino) 我有问题从char获取int值..这里 Serial.println(((char *)&quo ...
- 类与对象:类的6个默认成员函数: 构造函数、析构函数、拷贝构造函数、赋值操作符重载、默认拷贝构造与赋值运算符重载的问题、const成员函数、 取地址及const取地址操作符重载
1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类.任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数. 构造函数 析构函数 拷贝构造函数 赋值操作符重载 const成员函数 ...
- c语言tchar转char,CString、TCHAR*、char*转换
CString->TCHAR*的转化可以用函数GetBuff() 函数原型为:LPTSTR GetBuffer( int nMinBufLength ); CString str("C ...
最新文章
- pythonrequest爬取小说,pythonrequest爬取小说_python爬取斗破苍穹小说
- 人脸识别是怎么识别的?为什么需要大数据?(原理篇)
- maven(3)------maven构建web项目详细步骤
- eclipse 设置PythonIDE
- JSP标准标签库(JSTL)--简介
- 2017-9-17pat甲级 A
- Java中的数据库架构导航
- mysql设计一个简单的系统_一个简单数据库设计例子
- 使用express、react、webpack打包、socket.io、mongodb、ant.design、less、es6实现聊天室
- 美的集团:已耗资4.86亿元回购847.4万股
- c语言程序设计实践教程编程题8.3,C语言程序设计教程(21世纪计算机科学与技术实践型教程)...
- Linux---僵尸进程的解决办法
- 图像分割(一):K-means聚类算法
- mysql能管理多大的硬盘,Mysql----查看数据库,表占用磁盘大小
- Android Clipboard(复制/剪贴板)
- select和epoll
- Win7 64位操作系统连接HP 1010打印机完美解决方案
- 图片干扰背景处理,简单易懂
- 为什么要学习凸优化?
- Beta的计划和人员的变动
热门文章
- java分布式_分布式锁的四种JAVA实现方式
- x61 linux 驱动 无线网卡,Linux环境Thinkpad X61 4G内存Mtrr表错误
- python发送邮件并返回提示_用python3的smtplib库发邮件一直返回无法发送邮件提示,是什么原因?...
- nodejs mysql save_NodeJs Mysql简易操作工具
- deepdive连接mysql数据库_如何从Error Code获取Message
- android 检查 write_external_storage,android – 如何知道何时需要WRITE_EXTERNAL_STORAGE
- signature php今日头条,今日头条_signature 求解
- java 类型 转换 valueOf和parse...
- 协程 eventlet
- TensorFlow CTC