const指针理解.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
const指针理解

const指针理解 const指针理解 主要有3种用法: const指针3种用法 格式 限定对象 备注 const int *p = a;(或写作int const *p = a;) *p值不能改变 a的值可以改变 int *const p = a; p值不能改变 a的值可以改变 const int *const p = a; *p值和p值都不能改变 a的值可以改变 语法并非看起来那么变化多端。一般来说,你可以在头脑里画一条垂直线穿过指针声明中的星号(*)位置,如果const出现在线的左边,指针指向的数据为常量;如果const出现在线的右边,指针本身为常量;如果const在线的两边都出现,二者都是常量。 如: char *p = hello; 非const指针, 非const数据 const char *p = hello; 非const指针, const数据 char * const p = hello; const指针, 非const数据 const char * const p = hello; const指针,const数据 关于const char*, char const*, char*const(2008-09-14 00:15:25)标签:求职 找工作 c 校园 笔试 分类:职场必备 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只能属于前面的类型。 这样是不是就不会记混了 前两天在网上看到华为的一些笔试题,对基础的掌握仍然是这种大公司所重视的。其间对指针掌握的要求比较多,有一道是关于const指针的。看到那道题,回来整理了一些有关const指针的内容,分享一下。   const说明指针变量,组合的情况可能会显得很复杂。使用指针时要涉及两个目标,即指针本身和指针所指的对象。关于const指针变量,可归结为以下三种:   1.指向常量的指针变量;   2.常指针变量;   3.指向常量的常指针变量。   下面来分别谈谈这三种情况。 一、指向常量的指针变量: 声明格式: const type * var_name; 或 type const * var_name; 特点: 可改值。   将指针声明冠以const,使指向的对象为常量,而不是指针为常量。注意:指向常量的指针不一定指向真正的常量,它也可以指向常量,只是从该指针的角度来看,它所指向的对象是常量,通过该指针不能修改它指向的对象。它还可以指向其它的对象,可以不初始化。 -----eg: int a = 0,b = 1; const int c = 3; const int* pi; //等同于 (const int*) pi; pi = a; *pi = 10; //错误:不能修改它指向的对象。 a = 10; pi = b; *pi = b; *pi = 20; //错误:不能修改它指向的对象。 b = 20; pi = c; *pi = c; *pi = 30; //错误:不能修改它指向的对象。 -----eg2: const char* pc = asdf; pc[3] = a; //错误:不能修改它指向的对象。 pc = ghik; -----eg3: const char* step[3] = {left,right,hop}; step[2] = skip; step[2][1] = i; //错误:不能修改它指向的对象。 二、常指针常量: 声明格式: type* const var_name; 特点: 可改对象。   要把指针本身,而不是它指向的对象声明为常量,采用运算符 *const,必须初始化,通过该指针可以修改它指向的对象,但它不可以指向其他的对象。 -----eg: int a = 0,b = 1; int* const pi = a; //等于 int* (const pi) = a; *pi = 10; pi = b; //错误:pi本身为常量,不能指向其他对象。 三

文档评论(0)

wf93679 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档