- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)