学习C++第四天,在看《c++程序设计语言特别版》,昨天看到了指针和常量,一头雾水,只能这么形容,可能时间有点晚了,注意力不够集中了,反正是没看明白,今天赶紧接上,争取渡过这个难关,真别说,静下心来细细的看一会,真的有收获,怕忘了,赶紧记下,大家看我理解的对不对。
《c++程序设计语言特别版》5.4.1 指针和常量
“将一个指针的声明用const‘预选固定’将使那个对象而不是使这个指针成为常量”:
理解:一个指针的声明,如 char* pc -- pc是指针,加const后 const char* pc = s;,则使pc所指的内容s成为常量,pc就成了指向常量的指针
“要将指针本身而不是被指对象声明为常量,我们必须使用声明运算符*const”
理解:*const 是运算符,可以将指针本身声明为常量
void f1(char* p)
{
(1) char s[] = "Gorm";
(2) const char* pc = s; //指向常量
(3) pc[3] = 'g'; //错误:pc是指向常量的
(4) pc = p; //ok
(5) char *const cp = s; //常量指针
(6) cp[3] = 'a'; //ok
(7) cp = p; //错误:cp是常量指针
(8) const char *const cpc = s; //到const的const指针
(9) cpc[3] = 'a'; //错误:cpc指向常量
(10) cpc = p; //错误:cpc本身是常量
}
理解:
(2) char* pc---指针的声明
const char* pc=s---指s成为常量,pc成为指向常量的指针
(3) pc[3]='g';错误---原因:pc所指的内容已经是常量,不能对p所指的内容赋值pc[3]=....相当于对pc所指的内容赋值了
(4) pc=p;正确---原因:pc本身并不是常量,是指针,同传入的参数p一样
(5)通过*const,将指针本身变成了常量,故cp是常量指针
(6)cp[3]='a';正确---原因:cp本身是常量,但其所指的内容不是常量,故可以对其所指的内容进行赋值,cp[3]就是其所指的内容
(7)cp=p;错误---原因:cp本身是常量,不能对常量进行赋值
//如果上面这些都能理解,那面下面这句一看就明白了:)
(8)*const将cpc声明成了常量指针(cpc是常量,是指针),前面再加一个const,则cpc所指的内容也成了常量(s成了常量),故cpc是指向常量的常量指针(到const的const指针)
(9)(10)不用说了,cpc是常量,其所指的内容也是常量,既不能对其所指的内容cpc[3]赋值,也不能对其本身cpc赋值。
OK,记录完毕,语言很显罗嗦,实是为了明天看时还能看懂:),有理解不对的地方,还望指教。
posted on 2007-06-08 22:29
zhanghaibin 阅读(238)
评论(1) 编辑 收藏 引用 所属分类:
学习笔记