some cases about "const" in C Program
2007-09-26 16:39
507 查看
关键字const并不能把变量变成常量!在一个符号前加上const限定符只是表示这个符号不能被赋值。也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序的内部(甚至是外部)的方法来修改这个值。const最有用之处就是用它来限定函数的形参,这样该函数将不会修改实参指针所指的数据,但其他的函数却可能会修改它,这也许就是C和C++中const最一般的用法。---------〈C专家编程〉
const 在C中的真正含义是“readonly“,即,表示所限定的变量只可读,它并不表示“纯正”的常量!所以不能用它所限定的变量来定义数组。
例如:
const int x= 10;
char ch[x]; //error!
C中的指针有四种:
(1) type *p;
(2) type const *p;
(3) type *const p;
(4) type const * const p;
其中,type为任何一个数据类型,假设为int吧。
第一种指针是指向变量数据的变量指针,
指针的地址可以改变,其指针指向的内容也可以改变;
第二种指针是指向常量数据的变量指针,
指针的地址可以改变,但其指向的内容不允许改变;
第三种指针是指向变量数据的常量指针,
指针的地址不允许改变,但其指向的内容可以改变;
第四种指针是指向常量数据的常量指针,
指针的地址不允许改变,其指向的内容也不可以改变。
举例说明如下:
(1)const int *p 也就是: int const* p;
表示p是一个指向常整型数据的指针,该指针的地址可以改变,即可以指向其它的变量,但不能通过引用该指针而改变其指向的内容。
如:
int ix = 12;
const int *p = &ix;
则下列语句:
p = &iy; // true
*p = 13; //ERROR
(2) int * const p;
表示p指针不能改变,即p存放的地址值不能改变,但p指向的变量的值可以变。
如:
int ix = 12;
int * const p = &ix;
则下列语句:
p = &iy; //ERROR
*p = 13; //true
const 在C中的真正含义是“readonly“,即,表示所限定的变量只可读,它并不表示“纯正”的常量!所以不能用它所限定的变量来定义数组。
例如:
const int x= 10;
char ch[x]; //error!
C中的指针有四种:
(1) type *p;
(2) type const *p;
(3) type *const p;
(4) type const * const p;
其中,type为任何一个数据类型,假设为int吧。
第一种指针是指向变量数据的变量指针,
指针的地址可以改变,其指针指向的内容也可以改变;
第二种指针是指向常量数据的变量指针,
指针的地址可以改变,但其指向的内容不允许改变;
第三种指针是指向变量数据的常量指针,
指针的地址不允许改变,但其指向的内容可以改变;
第四种指针是指向常量数据的常量指针,
指针的地址不允许改变,其指向的内容也不可以改变。
举例说明如下:
(1)const int *p 也就是: int const* p;
表示p是一个指向常整型数据的指针,该指针的地址可以改变,即可以指向其它的变量,但不能通过引用该指针而改变其指向的内容。
如:
int ix = 12;
const int *p = &ix;
则下列语句:
p = &iy; // true
*p = 13; //ERROR
(2) int * const p;
表示p指针不能改变,即p存放的地址值不能改变,但p指向的变量的值可以变。
如:
int ix = 12;
int * const p = &ix;
则下列语句:
p = &iy; //ERROR
*p = 13; //true
相关文章推荐
- umount失败:In some cases useful info about processes that use……
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateP
- 安卓代码迁移:Program "sh" not found in PATH
- Exception in thread "main" java.io.IOException: Cannot run program "chmod": CreateProcess error=2
- eclipse cdt Program "make" not found in PATH
- cocos2d-x Program "bash" is not found in PATH
- cocos2d-x Program "bash" is not found in PATH
- Eclipse + CDT Program "gcc" not found in PATH
- some words about "route"
- eclipse 移植cocos2d-x工程 报错: Program "bash" is not found in PATH
- eclipse 移植cocos2d-x工程 报错: Program "bash" is not found in PATH
- the solution about "messy code" in elicpse
- 7. Eclipse 报错:Error: Program "sh" not found in PATH
- Program "make" is not found in PATH
- Eclipse 报错:Error: Program "sh" not found in PATH
- Exception in thread "main" java.io.IOException: Cannot run program "XX": CreateProcess error
- About Derby "ERROR 42X51: The class '***' does not exist or is inaccessible. This can hap pen if the class is not public."
- Simple "virus" like program in C++
- Error:Cannot run program "svn" (in directory "E:\work\kuaisou_1.3.8\Hello"): CreateProcess error=2,
- the solution about "messy code" in elicpse