const char*, char const*, char*const的区别

转载 2015年07月10日 11:44:21

const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下。

事实上这个概念谁都有只是三种声明方式非常相似:

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关键字放在类型或变量名之前等价的。

const int n=5; //same as below

int const m=10

结论:

char * const cp     : 定义一个指向字符的指针常数,即const指针

const char* p       : 定义一个指向字符常数的指针

char const* p       : 等同于const char* p

 

const   char   **是一个指向指针的指针,那个指针又指向一个字符串常量。   

       char   **也是一个指向指针的指针,那个指针又指向一个字符串变量。


http://blog.163.com/pei_hua100/blog/static/805697592009550281616/

const char *p;与char * const p;的区别

这里是const char *p;他的意思是p指向的目标空间的内容不可变化. 例如定义char c='A'; p=&c;则c的内容不可以变化.如c='B';等一些企图改变变量c的值的做法都不行. 然...
  • u012671808
  • u012671808
  • 2014年06月06日 11:20
  • 736

const char * 和 char const * 和 char * const 区别

我们都用过const 修饰符修饰一个变量,而且我们知道使用const修饰之后,这个变量相当于常量了,他的值在代码其他部分不能再修改,这对于函数调用时候,防止错误的修改原本不应修改的变量起到很大作用,举...
  • u013271921
  • u013271921
  • 2015年04月13日 19:20
  • 1804

如何理解const char*, char const*, char*const等

很惭愧,当程序员这么久对这些的区别还是一知半解。 究其原因是没有找到很好的理解方式,今天重新复习了下,终于找到一点奇技淫巧来记忆,我想以后应该再也不会忘了。 不过奇技淫巧终归不是正道,弄不好走火入...
  • swibyn
  • swibyn
  • 2014年02月27日 15:27
  • 15665

const char * 、char const *、 char * const 三者的区别

C/C++ 中关于以下三种定义: const char *ptr; char const *ptr; char * const ptr; 现整理三者之间的区别与联系。 一、const ch...
  • SilentOB
  • SilentOB
  • 2017年08月09日 15:58
  • 1368

C++形参中const char * 与 char * 的区别

在函数调用时,我们经常看见一个函数的接受参数为(const char *);   例如strlen()函数,它的定义为: size_t strlen( const char *s...
  • C2863490170
  • C2863490170
  • 2017年03月07日 08:54
  • 2484

const char* & NOT char* const &

今天在BBS VC版上看到有个同学这么一个帖子,说VC在编译模板时有BUG,他贴的测试代码如下:// TemplateBug.cpp : 定义控制台应用程序的入口点。 // #include "std...
  • ftofficer
  • ftofficer
  • 2005年01月20日 16:42
  • 2863

深入理解const char*p,char const*p,char *const p,const char **p,char *const*p ...

一、可能的组合:     (1)const char*p     (2)char const*p     (3)char *const p     (4)const char **p     (5)c...
  • tianziczj
  • tianziczj
  • 2010年11月02日 20:03
  • 1766

char * const p char const * p const char *p 三个有什么区别?

[定义理解] char* const p; p为指向字符变量的指针,地址不变,地址内容可变 const char *p; p为指向字符变量的指针,地址可变,地址内容不变 [记忆方法] const * ...
  • jjjcainiao
  • jjjcainiao
  • 2014年03月28日 10:48
  • 2801

const char*、char*及字符串常量的正确使用

const char*和char*的转换是老生常谈了,但是很少有人把它们和字符串常量一起分析,本人觉得这是搞清楚他们的一个关键。 下面是一个简单的测试程序: 编译环境:windows、vs2010 #...
  • cuishumao
  • cuishumao
  • 2013年08月23日 19:00
  • 2704

const char*, char const*, char*const使用时的区别

案例1: #include using namespace std; void main(void) { // char* a 与 char a[] 的区别 char* a = "abcdef...
  • tham_
  • tham_
  • 2015年05月19日 16:47
  • 5037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:const char*, char const*, char*const的区别
举报原因:
原因补充:

(最多只允许输入30个字)