dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
对const使用的理解
来源: 作者:

*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国  http://www.bc-cn.net
*/ 作者: neverTheSame    E-mail:zhaoxufeng9997@126.com    QQ:475818502
*/ 时间: 2007-11-16  编程论坛首发
*/ 声明: 尊重作者劳动,转载请保留本段文字
*/ --------------------------------------------------------------------------------------


const对很多人来说既陌生又熟悉.可以说很棘手的问题,
有些地方很难理解.我在刚学C的时侯,对它的理解也是很模糊的.
好像有点理解,但又说不出个所以然来.
在此,就向大家分享,我一直以来对它的理解,如有不当之处请指教.

   const可以说一种常量的声明的关键字,如const int a=2;变量a就是一个常变量,
a的值不能被改变,这个改变是一定意义上的不能改变.而是说值的改变不能直接通过a这个符号
来改变.但事实上,a的值是可能改变的.如下例子:
#include<stdio.h>
int main()
{
    const int a=3;
    int *p=(int*)&a;
    *p=100;
    printf("%d",a);
    return 0;
}
这样a的值就被改变了.
   const也可以说一种只读的关键字,如int integerArray[10]={0};const int* pointer=integerArray;
这里pointer是指向一个常变量的指针变量.pointer指向可能改变,但它所指向的变量的值就不能直接通过pointer来改变.
如:*(p+1)=2;这是不可以的.但如果有另外一个数组integerArray1,p=integerArray1是可以有.
还有指向的变量不可改变,这种不可改变是一定意义的改变.
如下例子:
#include<stdio.h>
int main()
{    
    int array[10]={0};
    const int *pointer=array;
    int *pointer1=(int*)pointer;
    pointer1[0]=1;
    printf("%d",array[0]);
    return 0;
}
以上例子说明了,不能直接通过pointer改变array,但可能间接通过pointer来改变array;
    现在说一说有const声明常指针,它的声明不像声明指向常量的指针形式.
它的声明形式为:int* const pointer; .常指针在编程的过程中它的指向不能改变.
因此,常指针在声明的时侯一定要给它赋初值.否则,就不能直接给它赋值.
但是,如果一定要给它赋上一定的值,是可以的.如下例子:
#include<stdio.h>
int main()
{
    int a=2;
    int* const p;
    int **p1=(int**)&p;
    *p1=&a;
    printf("%d",*p);
    return 0;
}
    经过上面的介绍,相信大家对指向常量的常指针的声明也不难写出吧.它的声明形式:
cont int* const p;它就不用作过多的介绍了,指向常量的常指针就是指向常量的指针与
常指针的复合了.
    好了就说到这里吧.


上一篇:cookie防止仿造安全总结   下一篇:爱因斯坦难题的C语言程序设计
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·爱因斯坦难题的C语言程序设计
·宏比函数实现在时间上的优越性探
·用地址替代变量的讨论
·M个人,1到N报数出列问题
·浅谈递归机制和非递归转换
·函数的可变参数详谈
·输入一行字符 统计字符 C语言
·C语言实现 恺撒加密法
·斐波那挈数列 C语言实现
·求最大数函数
·二维数组打印菱形 C语言
·static变量举例
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763