const constptr 和引用的盲点
Posted 菜鸟根据地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了const constptr 和引用的盲点相关的知识,希望对你有一定的参考价值。
#include<iostream> //const 和 引用的值必须初始化 //等号左侧是const或者const和引用,右侧可以是数字,普通变量-等号左侧是const和指针,右侧必须是const或者引用 --- //---但是等号右侧是const,则左侧必须是const using namespace std; int j = 0; //这里规定i和j都必须定义在函数体外 constexpr int i = 2; //这里规定i和j都必须定义在函数体外 int main() { const int *p = nullptr; // p是一个指向整形常量 的指针 constexpr int * q = nullptr; // q是一个指向整数的 常量指针 constexpr const int *p0 = &i; constexpr int *p1 = &j; constexpr const int *p2 = &j; const int *p3 = &j;//引用的本质是一个常量指针! {//const引用让变量拥有只读属性 (不能通过引用来修改原值了) int b ;//这里赋不赋初值都对 const int &a = b; } {//如果用一个对象去初始化另一个对象,则它们是不是const都无关紧要。 int c = 10; const int d = c; int e = d; } {//对常量的引用,引用及其对应的对象都是常量。 const int x = 1024; const int & y = x; // int & y1 = x; 不对 // y = 43; 不对,试图用一个非常量引用指向一个常量对象 } {//指针引用===等号左侧是const和指针,右侧必须是const或者引用 int i1 = 2; const int *j = 0; const int *i2 = &i1; const int *i3 = j; } system("pause"); }
不过仍旧有疑问:
就是i和j为什么必须定义到函数体外部,并且定义在内部显示
以上是关于const constptr 和引用的盲点的主要内容,如果未能解决你的问题,请参考以下文章
C/C++指针踩坑历险记-常量指针-const ptr *,指针常量ptr * const,引用,指针传参,指针修改,指针指向的值修改等问题
从字符串 stringstream 获取 const ptr 时的行为
const char * char const * char * const 三者的区别