今天在编程者论坛看到一个关于 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指向的内存区域的内容可以变
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指向的内存区域的内容可以变
本文详细解析了C++中constint*p与int*constp的区别,深入探讨了这两种指针类型在内存区域指向及可变性的不同表现形式,并通过实例说明了各自的使用场景。
2410

被折叠的 条评论
为什么被折叠?



