const修饰指针的三种效果】的更多相关文章

当用const进行修饰时,根据const位置的不同有三种不同效果. 判断的标准是:const修饰谁,谁的内容就是不可变的. 1 const int *p = &a; const修饰*p, *p不可变,p是指针,*p是指针p指向的内存单元里的内容,*p不可变也就是p指向的内存单元里的内容是不可变的. PS: 这儿*p是不可变的,但是p是可变的,就是p指向的内存单元或者说变量是可以变的,但是p指向谁,谁的值就不可变. 不可变指的是不能用*p改变a的值,但是a自己或者别的指针还是可以修改a的值. in…
使用指针时涉及到两个对象:该指针本身和被它所指的对象. 将一个指针的声明用const"预先固定"将使那个对象而不是使这个指针成为常量.要将指针本身而不是被指对象声明为常量,必须使用声明运算符*const. 所以出现在*之前的const是作为基础类型的一部: char *const cp ; //指向char的const指针 char const *pc1; //指向const char指针 const char *pc2;//指向const char的指针(这两个声明是等同的) con…
///////////////////////const 指针的三种状态///////////////////// 注意:const 的前后顺序 const 在类型之前 ---可以修改指针包含的地址,不能修改指针指向的值 const 在变量之前类型之后 ---可以修改指针的指向值,不能修改指针地址 // 1.指针指向的数据为常量,不能修改,但是可以修改指针包含的地址 /*int HoursInDay = 24;const int* pInteger = &HoursInDay; cout<&…
const这块的难点 const修饰指针有以下的几种形式 ,不同的形式 它的意义不一样. 形式1: int a=23: const int *p=&a: a是int型,&a是int *型的,要把int *型的赋给 const int *型的.涉及到了点类型转换. 问 const int *p=&a:这个操作,导致了谁不能被操纵了?! 这里修饰的是 *p,所以 *p 如果重新赋值是不可以的!! *p不能变,但是p是可以变的. 第二种: int const * p 这种情况和 cons…
关于const修饰指针的情况,一般分为如下4种情况: ; const int *a =&b; //情况1 int const *a =&b; //情况2 int* const a =&b; //情况3 const int* const a =&b; //情况4 如何区别呢? 如果const 位于星号的左侧,则const 就是用来修饰指针所指向的变量,即指针指向为常量: 如果const 位于星号的右侧,const就是修饰指针本身,即指针本身是常量. 1.情况1和2相同,都是指…
      这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用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指向的值是否可以修改. 下…
const修饰指针,一般分为如下四种情况: int b = 500; const int *a = &b;   //情况1 int const *a = &b //        2 int* const a = &b //  3 const int* const a = &b//  4 如何区别呢?1)先看情况1.如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量:如果const位于星号的右侧,const就是修饰指针本身,即指针本身是…
1 作业讲解 指针间接操作的三个必要条件 两个变量 其中一个是指针 建立关联:用一个指针指向另一个地址 * 简述sizeof和strlen的区别 strlen求字符串长度,字符数组到’\0’就结束 sizeof是看数据类型占用大小(字节 何为野指针 声明指针变量后,内部数是随机的,为了避免野指针,初始化的时候要设为NULL 使用完之后,依然要设为NULL 2  昨日回顾 3 字符串易犯错误模型 判断一个指针是否合法应该看这个指针的值是不是NULL 而不是看*的内容 (错,最后a的位置已经变了,…
const修饰指针 1.const修饰指针 (常量指针)常量的指针 const int *p = &a; const修饰的是*p(表示内容为常量),不是p(指针) 指针指向的地址可以改,但指针指向的值不可以改,这里是指向的值不可改是不能通过*p改,但是可以通过a改, p = &b; (对) * p = 20 (错) 2.const修饰常量 (指针常量)指针是常量 int * const p = &a; const修饰的是p(表示指针是常量) p指向的地址不可以改变,但是该地址内存放…
在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指针常量,因此,指针始终指向一个内存地址,即该指针存储的地址数据不变,同时也可以通过此指针进行对应存储地址的数据修改,同时需要注意的是,时刻谨记声明为const的指针在声明时必须被初始化.废话不多说,直接上程序测试: //本程序测试指向非常量数据的常量指针 //意在使得大家清楚 const 在修饰指针…