C Abstract——const

原创 2015年07月09日 21:57:47

const关键字是一个用来限定变量不被修改的修饰符,在一定程度上可以提高程序的安全性和可靠性。


1)int *const p

const修饰p,故而直接对p进行赋值修改是非法的,p只能指向初始化地址,修改p指向的内容是合法的。

    #include <stdio.h>  
    #include <stdlib.h>  
    int main(int argc, char* argv[])   
    {  
        int a=1;  
        int b=2;  
        int *const p=&a;  
        printf("p address %x, p value is %d.\n", p, *p);  
        *p=b;//p=&b是非法的,因为p的地址不能被改变  
        printf("p address %x, p value is %d.\n", p, *p);  
    }

2)int const *p

const修饰的对象是p指向的内容,所以对*P的赋值是非法的,但通过修改p指向的地址是允许的。

    #include <stdio.h>  
    #include <stdlib.h>  
    int main(int argc, char* argv[])   
    {  
        int a=1;  
        int b=2;  
        int const *p;  
        p=&a;//*p=a是非法的  
        printf("p address %x, p value is %d.\n", p, *p);  
        p=&b;  
        printf("p address %x, p value is %d.\n", p, *p);  
    } 

3)int const* const p

const同时修改了p和p指向的内容,所以p和*p在初始化时就被确定了,任何赋值都是非法的。

    #include <stdio.h>  
    #include <stdlib.h>  
    int main(int argc, char* argv[])   
    {  
        int a=1;  
        int b=2;  
        int const *const p=&a;//必须在声明时初始化  
        printf("p address %x, p value is %d.\n", p, *p);  
    } 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++学习笔记:C的继承与超越——const关键字

C语言中也有const关键字,但是它却是一个不地道的常量关键字。 const int MAX = 100; int a[MAX];在C语言编译器下,定义数组的这条语句往往会报错。定义数组大小需要的是常...

C的关键字——const的理解和用法

关于C的关键字——const的理解和用法     const在C中的用法很灵活(相信C++中也一样),个人感觉对之既爱又恨,有时候感觉const很好用,同时又经 常会因为它的优点而犯错,犯错的原因...
  • cgbabc
  • cgbabc
  • 2011年11月02日 16:56
  • 66

C/C++——const的用法

本文总结了C/C++最常见的const的用法,包括const与变量,引用、指针和函数的使用,以及在对象中使用const的方法,属于C++的语法基础。...

C/C++面试(2)——const

1.const修饰指针或变量,防止定义的对象再次被修改 原文:http://blog.csdn.net/jamestaosh/article/details/4348726 const变量 & c...

const——c与c++不同

初学c++,对const有一点小小的感悟,记录下来,有不到位的地方还请各位大神指点。>   const是一个类型限制符,本质上是对变量所在的存储空间有所限制——只能读不能写,就是这个限制导致了co...
  • wmaoshu
  • wmaoshu
  • 2015年12月28日 10:27
  • 296

C/C++ const几点总结(2)——指针与函数

1.当使用带有指针的const时,有两种选择:const

c——const

概述 const习惯翻译为常量是const引起混淆的根本原因,const不应翻译为“常量”,应翻译为“不可修改”,理解了这一点,也就基本理解了const 对象值修改 编译器不认为初始化修改了对象值...
  • mardax
  • mardax
  • 2017年02月07日 15:48
  • 80

C提高——const专题

const 修饰变量例如:const int a = 0;int main() { // int const a = 0;// 和下面的写法意思是一样的 const int a = 0...

cpp——与c之不同——static const

static c static在c中是一个多义词,可修饰全局对象和局部对象 修饰全局对象:对应中文为"内部的",修饰对象作用域 修饰局部对象:对应中文为"静态的",修饰对象存储方式(生命周期) s...
  • mardax
  • mardax
  • 2017年03月13日 20:56
  • 129

cpp——与c比较之不同——函数 static const

c++与c比较之不同(二)
  • mardax
  • mardax
  • 2016年10月26日 16:45
  • 341
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C Abstract——const
举报原因:
原因补充:

(最多只允许输入30个字)