zoukankan      html  css  js  c++  java
  • 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为什么必须定义到函数体外部,并且定义在内部显示

  • 相关阅读:
    面试题 33 把数组排成最小的数
    面试题32 1的数目
    面试题29 数组中出现次数超过一半的数字
    LeetCode_Combination Sum II
    LeetCode_Combination Sum
    面试题27 二叉搜索树转换为双向链表
    面试题26 复杂链表的复制
    面试题24 二叉搜索树的后序遍历序列
    LeetCode_Binary Tree Inorder Traversal
    省选模拟57 题解
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6752321.html
Copyright © 2011-2022 走看看