数组名称也是一个指针常量,如int a[100];中a == &a[0]的。即是数组第一个元素的地址。
指向常量的指针:在指针定义语句的类型前加const,表示指向的对象是常量。如:const int *pi=&count;(*pi指针指向的值不能修改,但是地址可以被修改,即可以将指针指向另一个常量)
指针常量:在指针定义语句的指针名前加const,表示指针本身是常量。如 int * const pi="1234";int * const pi =&count;在定义指针常量时必须初始化,且不能作为左值进行操作,但是允许修改间接访问值,即*pi = "3333";或者*pi = &pi2;
指向常量的指针常量:是指向常量的指针和指针常量的组合,它拥有两者的功能。即指针指向的值不能修改,且地址也不能被修改。如:const int * const pi=&cont
概念 | 表达式 | 修改指针(地址) 指向另外一个常量 | 修改值 | 总结 |
指向常量的指针 | const int * p =&k; | 是 | 否(内存保护) | 地址可以修改,指向另一个常量。但不能改变常量的值,k必须是常量变量 |
指针常量 | int * const t =&m; | 否 | 是 | 可以改变值,m不能是常量
|
指向常量的指针常量 | const int * const j =&l; | 否 | 否 | 地址和值都不能修改,l必须是常量
|
记住const是哪一个就可以了,哪一个就不能改变,哈哈