const int * a和int const *a一样,定义时不是必须初始化,指针可以指向其他变量,但是指向的变量的值不能修改。

int * const定义时必须初始化,即必须指明指向哪个变量,定义后就不能再指向其他变量,但是指针指向的变量的值可以被修改。

 #include<iostream>
using namespace std;
int main()
{
//a和b是一样的,代表一个常整型数,必须手动初始化
const int a = ;
int const b = ;
int ca = ;
int cb = ;
//c是一个指向常整数型的指针,可以不初始化
int const *c ;//同const int *c;
c = &ca;
cout << *c << endl;//3
//指针本身可以修改:可以再指向其他变量
c = &cb;
cout << *c << endl;//4
//指针所指向的内存数据不能被修改:指针指向的变量不能再被赋值
//*c = 5;//error int *e = &ca;
cout << *e << endl;//
e = &cb;//正常的指针和变量都不是const的话可以改变指针的指向
cout << *e << endl;//
*e = ;//正常的指针和变量都不是const的话可以改变指针所指向变量的值
cout << *e << endl;//6
//d是常指针,必须初始化:指明指针指向哪个变量
int * const d= &ca;
cout << *d << endl;//3
//指针变量本身不能修改,即不能再指向其他变量
//d = &cb;//error
*d = ;
//可以改变指针所指向的变量的值
cout << *d << endl;//7 //f:一个指向常整型的常指针(指针和它所指向的内存空间,均不能被修改)
const int * const f = &cb;
cout << *f << endl;
//f = &ca;//error
//*f = 9;//error
system("pause");
return ;
}

const int * 和 int * const 傻傻分不清楚的更多相关文章

  1. 对于这个函数const int func(const int& a) const声明中,三个const分别是什么意思?

    第一个const 函数的返回值类型是const. 这个const修饰没什么意义,你可以想象一下: 既然是函数的 返回值,而且是值传递的形式,是否const有什么意义.如果指针(引用)传递,怎表示返回值 ...

  2. const与常量,傻傻分不清楚~

    当数组的长度在运行中才能够确定时,普通的静态数组无法满足要求,此时需要动态数组来实现. 今天突然想,const变量在初始化时可以接受变量的赋值,那么可不可以用它来定义一个静态数组呢?于是有下面的尝试: ...

  3. const int * p 和 int const * p 和 int * const p 的区别

    首先注意,const int * p 和int const *p 是一样的,并且不管是不是*p,即使const int i和int const i也是一样的,所以我们接下来只讨论int const * ...

  4. c语言检测文件是否存在int __cdecl access(const char *, int);

    最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者 ...

  5. const int * pi/int * const pi的区别

    前面有一篇文章:数组名就是常量指针 参考文章:http://blog.pfan.cn/whyhappy/5164.html const int * pi .int const * pi与int *   ...

  6. 【转】int const A::func()和int A::func() const

    int const A::func() { return 0; }int A::func() const { return 0; } 上面的代码是合法的,其中A::func成员函数[只能在成员函数后面 ...

  7. const int *p,int *const p区别(转)

    1)先从const int i说起.使用const修饰的i我们称之为符号常量.即,i不能在其他地方被重新赋值了.注意:const int i与int const i是等价的,相同的,即const与in ...

  8. C/C++中的const int*和int * const

    代码: #include <iostream> using namespace std; int main(){ const int *p; ; p = &a; a = ; cou ...

  9. const vector<int> 和 vector<const int>问题讨论

    1.const vector <int> vec(10) —— 与const int a[10]是一回事,意思是vec只有10个元素,不能增加了,里面的元素也是不能变化的 vector&l ...

随机推荐

  1. 手推Apriori算法------挖掘频繁项集

    版权声明:本文为博主原创文章,未经博主允许不得转载. Apriori算法: 使用一种称为逐层搜索的迭代方法,其中K项集用于搜索(K+1)项集. 首先,通过扫描数据库,统计每个项的计数,并收集满足最小支 ...

  2. 【WIP_S3】链表

    创建: 2017/12/26 完成: 2018/01/14   [TODO]     S4, S5, S14来处理动态数组   CAF8A81B790F [github 地址]传送门  链表的定义   ...

  3. bzoj 1622: [Usaco2008 Open]Word Power 名字的能量【模拟】

    模拟即可,注意包含可以是不连续的 方便起见读入的时候全转成小写 #include<iostream> #include<cstdio> using namespace std; ...

  4. 清北考前刷题day2下午好

    #include<iostream> #include<cstdio> #include<cstring> #include<stack> #defin ...

  5. CSS3 核心知识面试题

    一种常见利用伪类清除浮动的代码 .clearfix:after { content:"."; //这里利用到了content属性 display:block; height:; v ...

  6. Kafka详解与总结(七)-Kafka producer拦截器(interceptor)

    1. 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑. 对于producer而言,interceptor ...

  7. 使用frp工具实现内网的穿透以及配置多个ssh和web服务

    frp简介 FRP 项目地址 https://github.com/fatedier/frp/blob/master/README_zh.md frp 是一个可用于内网穿透的高性能的反向代理应用,支持 ...

  8. 洛谷 P3437 [POI2006]TET-Tetris 3D

    二维线段树区间更新啊 树套树的外层树,如果是线段树的话一般似乎不能打标记?(毕竟标记不好下传) 然而起码对于这题是可以的...对于外层线段树,每个节点放两个内层线段树dat和setv,分别是得到的值和 ...

  9. php 页面展示

    php 页面展示 复杂逻辑. 段落注释

  10. 使用jstack精确找到异常代码的

    https://blog.csdn.net/mr__fang/article/details/68496248