[转] const int* p和int* const p
const int * p = &i1;这条语句运行发生了哪些事情呢?
1、p指向变量i1的内存区域
2、*p指向变量i1的内存区域的内容
3、*p是整型的
4、*p是常量
(注:可见const int * 和 int const *是相同的)
所以
1、p可变,因为它不是常量
2、*p不可变,因为它是个常量
3、*p指向的内存区域的内容可以变(通过i1)
同理可分析int * const p
int * const p = &i1;这条语句运行发生了哪些事情呢?
1、p是常量
2、p指向变量i1的内存区域
3、*p指向变量i1的内存区域的内容
4、*p是整型的
所以
1、p不可变,因为它是常量
2、*p可变,因为它不是常量
3、*p指向的内存区域不可变(即p),*p指向的内存区域的内容可以变
1、p指向变量i1的内存区域
2、*p指向变量i1的内存区域的内容
3、*p是整型的
4、*p是常量
(注:可见const int * 和 int const *是相同的)
所以
1、p可变,因为它不是常量
2、*p不可变,因为它是个常量
3、*p指向的内存区域的内容可以变(通过i1)
同理可分析int * const p
int * const p = &i1;这条语句运行发生了哪些事情呢?
1、p是常量
2、p指向变量i1的内存区域
3、*p指向变量i1的内存区域的内容
4、*p是整型的
所以
1、p不可变,因为它是常量
2、*p可变,因为它不是常量
3、*p指向的内存区域不可变(即p),*p指向的内存区域的内容可以变