const关键字与指针

const与指针在一起的几种情况。

const int *p1;        //表示p1本身不是const,指向的变量是const.
const *int p2;        //语法错误
int const *p3;        //表示p3本身不是const,指向的变量是const.
int *const p4;        //表示p4本身是const,指向的变量不是const.
const int *const p5;  //表示p4本身是const,指向的变量是const.

区分p本身是const还是指向的变量是const,一个简单的办法就是:去除掉类型,再分析。

例1:

const int *p1;

去掉int后就是:const *p1; 可以理解为const (*p1);就表示p1本身不是const,指向的对象是const。

例2:

int *const p4;

去掉int后就是:*const p4; 可以理解为* (const p1);就表示p4本身是const,指向的对象不是const。

最后,上面的分析方法仅仅是一种理解,在语法上是没有const *这种直接修饰的,其中" const *int p2 " 就是一个错误的例子。

时间: 2024-08-01 10:30:57

const关键字与指针的相关文章

const关键字和指针的纠缠

const关键字定义的变量 #include<stdio.h>int  main( void ) {    const int a = 10;     a = 20; }12345671234567 结果怎样? 编译错误 [Error] assignment of read-only variable 'a' 变量a是只读的. 得到一个结论,使用const修饰的变量是常量,我们无法修改.在gcc中把const常量放到了data段,和全局变量一样,只是把它放到了一个区域中让我们无法修改,在运行过

const关键字和指针

const和指针相结合的四种情况 四种情况分别如下: int cons *p p本身不是常量,p指向的地址的数据为常量 const int *p p本身不是常量,p指向的地址的数据为常量 int * const p p是常量,p指向的地址空间内不是常量 const int * const p p是常量,p指向的地址空间也是常量 总结:当const在*左边是,修饰的是p指向的地址的数据,当const在*右边是,修饰的p 当用const修饰一个变量时,在gcc下,依然可以通过指针修改变量的值 int

const关键字与数组、指针

目录 const关键字 const修饰数组 const修饰指针 用两个const修饰指针 @ 开始回顾C基础知识.C中使用指针是很危险的事情,一个不慎就会造成程序崩溃,因此对于传入函数的参数进行保护就是必须的了,特别是针对数组. const关键字 const关键字用于将一个变量声明为只读,也就是常量,无法被修改. const int constant = 10;//声明constant为常量的同时对它进行初始化赋值 int const constant = 10;//也可以将const放在int

关于C++指针、引用和const关键字的各种关系

const int x1=0;//常量写法1 int const x2=0;//常量写法2 int x3=0; int * const p1=&x3;//指针常量(指针类型的常量,对象是指针类型的,指针本身是常量,顶层const) const int* p2=&x1;//指向常量的指针(指针本身是变量,指向的数据是常量,底层const) const int* const p4=&x1;//指向常量的指针常量(顶层+底层const) const new_type p5=&x3

C++ 类中的const关键字

//类中的const关键字 #include<iostream> using namespace std; class Point{ public: //这个const关键字本质上修饰的是this指针 int GetX() const //====>int GetX(const this) { //因为this被隐藏,所以const关键字只好写在函数后面 //x++; //加上const关键字 报错 error C3490: 由于正在通过常量对象访问“x”,因此无法对其进行修改 //这个

c语言const关键字

作者:沉默羔羊 c语言const关键字: --  特点. 使用该关键修饰的变量不能被改变.      --指针常量. demo:   const char *p或者是 char const * p --常量指针. demo: char * const p      --常量指针和指针常量. 1.常量指针指的是如 char * const p, p是一个常量,p不能改变指向. 2.指针常量指的是如char const *p,   p指向一个字符常量,p可以改变指向.但是不能改变*p. --对于常量

const关键字详解

const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500;     const   int*   a   =   &b;              [1]     int   const   *a   =   &b;              [2]     int*   const   a   =   &b;              [3

c++中const关键字全面总结

一.const作用 1.const定义常量 注意:const只对它左边的东西起作用,唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用. (1)const修饰变量,以下两种定义形式在本质上是一样的.它的含义是:const修饰的类型为TYPE的变量value是不可变的. TYPE const ValueName = value; const TYPE ValueName = value; (2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初

C语言之头文件,static与const关键字

[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔记之类的自己写写笔记,今天整理成博客,以便自己以后回顾. [正文] C语言头文件:将其理解为C语言模块化编程向外提供一个接口描述文件.一般包括一些供外部函数或者文件使用的变量声明,函数声明,数据类型定义以及宏定义等.举例: /*************************************