【摘要】:动手写6.2.8动手写6.2.8展示了指向const对象指针的使用,运行结果如图6.2.9所示:图6.2.9指向const对象的指针我们可以看到,要定义一个指向const对象的指针,我们就要在const对象类型名后加上星号。既然指向const对象的指针还是可以修改地址的,那么应该也有另外一种不能修改地址的指针,也就是const指针。动手写6.2.9动手写6.2.9展示了尝试修改const指针而导致的编译错误。
我们之前讲解了使用左值解引用来修改指针指向的原变量的例子,但如果原变量是const,值是不能被修改的,因此我们也需要有一种特殊的指针来保证原变量不会被修改,这就是指向const对象的指针。
动手写6.2.8
动手写6.2.8展示了指向const对象指针的使用,运行结果如图6.2.9所示:
图6.2.9 指向const对象的指针(www.xing528.com)
我们可以看到,要定义一个指向const对象的指针,我们就要在const对象类型名后加上星号。“int *ptr1 = #”这一行如果去掉注释,编译器就会报错,因为普通指针不能指向const对象。“*ptr2 = 4;”这一行如果去掉注释相当于修改const对象的值,编译器也会报错。
这里需要注意的是,虽然ptr2指向的地址中的值不能修改,但是它本身指向的地址却可以修改。在示例中,我们先后又让它指向了另外两个变量,其中也有一个非const的变量,指向非const变量的这一种指针也不能修改解引用后的值。
既然指向const对象的指针还是可以修改地址的,那么应该也有另外一种不能修改地址的指针,也就是const指针。
动手写6.2.9
动手写6.2.9展示了尝试修改const指针而导致的编译错误。const指针的创建语法是将const移到了星号后面,一开始ptr1指向num1,而当我们尝试把num2的地址赋值给ptr1的时候编译器就会报错。在后面的章节中我们会将这一小节讲到的两种指针结合在一起,声明一个指向const对象的const指针ptr2,这个指针只能指向const int变量,它指向的地址也不能改变。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。