1.对于普通的const与基本类型组合,都是表示的是这是一个常量, const int a; int const a; 表示的意思是一样的,a是一个常量,不可改变 2.对于const与指针组合在一起,可以将const理解为内容,*理解为指针,誰在前面谁不能改变,誰在前面先读谁 const int *a;  等价于int const *a;    const在前面所以内容不可以改变,但是指针指向可以改变.也就是常量指针 如:int const *a=b;    这样就不能再出现*a=x等其他值了,…
const和指针的组合: 注释部分表示非法. ; ; p=&a; //*p = 1 ; ; pp= &a; //*pp = 1; ; //pv=&a; *pv = ; ; //pavp = &a; //*pavp = 1; ; //pbvp = &a; //*pbvp = 1; ; //pcvp = &a; //*pcvp = 1; 下面的代码可道出一个关键:因为C / C++里面没有const*的运算符,所以const只能属于前面的类型. ; typede…
const修饰符 使用const修饰变量时,该变量的值不可修改,因此需要初始化. 例如 const int s = 0: 此时s为值不可变的变量. 那么基于此,当const修饰指针时的情况有三种: (1)const int *p: 此时const修饰的是 *p 而非 p,因此,*p的值不可变,而p的值是可变的,所以可不对p进行初始化. 例如, int s = 0,t = 1; const int *p; p = &s; cout<<*p<<endl; p = &t;…
在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const  int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前,所以p指向的这个int变量对于*p来说是const的,即不能通过*p改变这个变量的值,但是变量本身可以随便改变自己的值.另外也可以改变p的指向. 例: int x=2; int y=3; const int *p=&x; *p=4;   //错误,不能通过*p改变变量的值 x=4;    //可以,…
      这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可变2.int const *p; // p 可变,p 指向的对象不可变3.int *const p; // p 不可变,p 指向的对象可变4.const int *const p; //指针p 和p 指向的对象都不可变       可以看到,这四种情况面对的问题是p的值和p指向的值是否可以修改. 下…
在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现了指针常量.常量指针这些名词,发现明白这些概念对阅读文章时还是比较重要的. 关键:const和指针结合时代码从右往左看 1.常量指针(const pointer) 概念:常量是形容词,也就是说常量指针是一个指针,用const修饰的指针. 按照代码从右往左(概念名词从左往右)的阅读顺序,不妨试着写一下. Ste…
前言 过了几个月再次更新.最近时间也不多了,快要期中考试了,暂且先少写一点吧. 本文仅在博客园发布,如在其他平台发现均为盗取,请自觉支持正版. 练习题 我们先来看几道题目.如果这几道题都不会的话,就先好好复习我写的前四篇文章吧,这一章是肯定看不懂的. 1.使用指针编写swap函数.(经典例题) 答案 void swap(int *a,int *b){ int t=*a;*a=*b;*b=t; } 2.已知数组a[10][10],交换该数组的第1和第3行. 答案 实际上,二维数组的每一行都是一个单…
在C语言中不可改变的数据(量)就是常量    在C语言中有三种常量        字面量(直接量),就是直接写出来的,从写法上就可以看出值与类型等,例如:19,123.456等        名字常量(宏定义,宏替换),语法:            在代码一开始的位置写上                #define 名字 值            运行原理说明:程序要经过:编码->编译->链接->运行                    在编译的过程中,又分为一开始的预编译     …
//const与指针 #include<stdio.h> #include<stdlib.h> void main(){ ; ; const int *p; p = &num1; //p可以变化 p = &num2; //p可以变化 //*p = 5; 报错 这表明p指向一个常量,这个指针不可以改变指向的数据,可以改变p的值(即指向谁) int const *p1;//等价于const int *p; /*int * const p2;---此时报错,p2是个常量,…
const和 define在常量定义上的差别 在C++中,我们可以使用const 或者 宏define来定义常量.但是C++鼓励使用const定义常量,而不是宏define.原因有很多. 1.define是C遗留下来的老古董,const比define更优雅,更符合符号常量的本意. 2.define用在复杂的代码中,不理解define的实质的人就会出问题.define是代码字面上的替换,预处理阶段还原替换的内容. const定义的常量可以说是“不变的变量“,因为它确实用了一个变量取保存某个不会发生…