- #include <iostream.h>
- int main(void)
- {
- int i = 20;
- typedef int *myint;
- const myint mintval = &i;
- cout<<*mintval;
- return 0;
- }//运行结果显示为 20
如果将typedef看成宏展开,即
const myint mint ==► const int* mintval //mintval是指向const int的指针
那么也就说mintval指向的int对象的值是不能改变的。
修改代码如下验证这种假设:
- #include <iostream.h>
- int main(void)
- {
- int i = 20;
- typedef int *myint;
- const myint mintval = &i;
- (*mintval)++;
- cout<<*mintval;
- return 0;
- }//运行结果显示为 21
这段代码不但编译通过,并且运行的结果也显示mintval所指向的int对象i被修改了。
这也就是说mintval的类型不是指向const int的指针。
实际上关于const myint mintval的含义应该这样看:
const修饰mintval的类型, 而mintval是一个指向int的指针,
所以const myint mintval表示mintval是指向int的const指针。
修改代码如下验证上述结论:
- #include <iostream.h>
- int main(void)
- {
- int i = 20;
- int i2 = 30;
- typedef int *myint;
- const myint mintval = &i;
- mintval = &i2; //编译错误:error C2166: l-value specifies const object
- cout<<*mintval;
- return 0;
- }//无法运行
上述结果表明mintval是指向int的const指针的结论是正确的。