C语言之知识点总结——const指针
来源:互联网 发布:淘宝导航栏css编辑器 编辑:程序博客网 时间:2024/05/27 09:49
注意:要在声明的时候进行初始化
声明的方式:类型名 * const 变量名
1.不能再指向别的变量,指针的value不可更改
- #include<stdio.h>
- void main(){
- int a = 89;
- int * const p = NULL;
- p = &a;
- }
报错:
error C2166: l-value specifies const object
2.可以通过指针为那个变量赋值(变量值不是const)
- #include<stdio.h>
- void main(){
- int a = 89;
- int * const cp = &a;
- *cp = 188;
- printf("a=%d\n",a);
- }
结果:
a=188
Press any key to continue
3.const指针指向的是const变量,改变变量的值(在LINIX下可以实现)
- #include<stdio.h>
- void main(){
- const int b = 89;
- int * const pp = &b;
- *pp = 100;
- printf("b = %d\n",b);
- }
第二种声明方式:const 类型名 * 变量名
1.pointer to constants 指向常量的指针
指向常量的指针,防止通过指针去修改变量的值,不管该变量是否是const变量
- #include<stdio.h>
- void main(){
- int x = 123;
- const int *pc = &x;
- *pc = 8989;
- printf("%d\n",x);
- }
结果:不能修改
rror C2166: l-value specifies const object
2.指向常量的指针,该指针可以指向别的变量,指针的value是可以更改
- void main(){
- int x = 123;
- int y = 321;
- const int *pc = &x;
- printf("%p\n",pc);
- pc = &y;
- printf("%p\n",pc);
- }
3.指向常量的指针,不能赋值为一个普通的指针,因为指向常量的指针是不可以修改变量的值的,如果把它赋给了一个普通的指针,那么就可能
实现修改变量的值,所以是不可以的
- #include<stdio.h>
- void main(){
- int x = 123;
- const int *pc = &x;
- int *q = pc;
- }
报错:
error C2440: 'initializing' : cannot convert from'const int *' to 'int *'Conversion loses qualifiers
第三种声明方式:const int * const 变量名
该指针变量的值和该指针指向的空间的值都是不可改变的
加深:
#include<stdio.h>void main(){//第一基本类型的const变量,const位置在哪儿都可以const int x = 123;const int y = 321;//定义一个非constbianlint z = 111;//定义一个指向常量的指针const int *p = &x;//定义一个常指针int *const q = &z;//定义一个非const指针int * w = &z;x=y;//是错误的,因为const变量是不能修改的,而且const变量不能做左值p=&z;//正确,指向常量的指针的value的值是可以修改的,就是说可以指向别的变量,但是不能通过该指针去修改它所指向的内存空间的值*p=10;//错误,指向常量的指针中,是不能通过指针来修改变量的值的*p=y;//错误,同上p=w;//正确,指向常量的指针他的value是可以修改的z=5;//正确,z是一个变量,可以改变它的值z=x;//正确,x作为const变量只能作为右值,不能作为左值*q=x;//正确,const指针变量是可以修改它所指向的地址里面的值q=&x;//错误,因为x在这里是作为常量的存在,是不能改变的,而q这个指针是可以通过它来改变变量的值的 //不过原则是是可以的,标准c中是可以改变变量的值的w=&x;//错误,因为x在这里是作为常量的存在,是不能改变的,而w这个普通的指针是可以通过它来改变变量的值的 //不过原则是是可以的,标准c中是可以改变变量的值的w=p;//错误,因为指向常量的指针是不能改变它所指向的内存空间里的值的,而w这个普通的指针是可以通过它来改变变量的值的,所以不能把指向常量的指针赋给普通的指针w=q;//正确,因为q这个指针是可以通过它来改变变量的值的,而w这个普通的指针也是可以的}参考网址:http://blog.csdn.net/like7xiaoben/article/details/7328659
0 0
- C语言之知识点总结——const指针
- 黑马程序员——C语言知识点总结之指针和关键字static、extern
- 程序员——C语言之指针 易错知识点
- C语言知识点之关键字const
- C语言总结之const
- C语言 const 指针使用技巧之——返回指针的函数
- <C语言>特殊指针——const指针、void指针、NULL指针、零指针、野指针
- C语言提高之——C和指针总结
- C语言之const与指针
- C语言指针知识点
- C语言之const常量(摘自C和指针)
- C语言基础总结之琐碎知识点
- C语言基础总结之琐碎知识点
- C语言中的const指针
- c语言初学-const指针
- const和指针(C语言)
- c语言-指针 const解析
- C语言const与指针
- Eclipse导入格式化模版
- [ACM] POJ 3070 Fibonacci (矩阵幂运算)
- git 生成 公钥
- 13种排序算法详解(相当清楚,还附有flash动画)
- 反射
- C语言之知识点总结——const指针
- 【笔记】简单易懂的android配置NDK
- 美团2015校招研发笔试题--编程
- 美AFL公司发布光纤连接器检测仪
- windows7 系统游戏全屏显示
- C++编译过程
- javascript深入理解js闭包
- Python 正则表达式验证Identifiers
- eclipse 快速运行 play framework 项目 eclipse launch