zoukankan      html  css  js  c++  java
  • const T* 和 T* const

      使用c++的时候,经常会在 const int *p 和 int * const p这个地方迷惑。这里记录一下:

    const int *p  = int const *p //这里const后面的为*p, 将他们视为一个整体,即 *p是const的,即p指针指向的内容是不可以修改的;但是p是可以修改的。

    int* const p; //const 修饰的为p,即p是不可修改的,但是p指向的内容是可以修改的.

        int a = 1, b = 2;
    	const int c = 10;
    	const int* p = &a;
    	//*p = 10;	//出错,不可修改指向的内容
    	a = 20;		//可以通过别的手段修改,但是不能通过指针p修改
    	p = &b;		//可以
    
    	int* const p2 = &a;
    	//p2 = &b;	//出错,不能修改指针
    	*p2 = 100;	//可以
    
    	//int* const p3 = &c;	//错误,非常量指针不能指向常量,因为可以通过*p3修改内容,
    							//而c为常量,不能被修改。防止通过非常量指针修改常量
    	const int* p4 = &c; 
    

     
    如果*在const之后,则const就修饰的是 *p 表示指向的内容是const的; 如果 *在const之前,则const修饰的只是p,表示指针是const的,而内容可以改变。

  • 相关阅读:
    Sublime Text 3 快捷键精华版
    css动画+滚动的+飞舞的小球
    css动画+照片清晰度动画
    simhash
    抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
    不逃离WIndows,Asp.Net就只能写写进销存管理系统
    吸引下百度蜘蛛
    Arcpy功能总结
    英雄杀
    NCEP Datasets
  • 原文地址:https://www.cnblogs.com/gtarcoder/p/4807342.html
Copyright © 2011-2022 走看看