const修饰变量和指针的使用

来源:岁月联盟 编辑:zhu 时间:2009-02-25
const型的变量是不能被程序修改的,但是确可以被赋予初始值。编译程序把这类变量放入只读区域。
如:const int a = 10;生成名为a的整形变量,程序不能修改其内容。
如果是和指针一起使用那么要注意,该指针指向的内容是不能被修改的。
下面的代码说明了 const char *str的作用:
#include <stdio.h>
void sp_to_dash(const char *str);
int main(void)
{
sp_to_dash(/"this is a test/");
return 0;
}
void sp_to_dash(const char *str)
{
while(*str) {
if(*str== ’ ’) printf(/"%c/", ’-’);
else printf(/"%c/", *str);
str ;
}
}
如果if(*str== ’ ’) printf(/"%c/", ’-’);改为if(*str== ’ ’) *str = ’-’;那么编译器会报错,因为*str是不可修改的。
对于修饰指针的情况如:char * const p,就是将P声明为常指针,它的地址不能改变,是固定的,但是它的内容可以改变,以下是它的常用的情景:
#include<stdio.h>
#define HARDWARE_PORT 0x80000000;
void main()
{
char * const p = (char*)HARDWARE_PORT;
//for()...
//{
//*p = ...;//data output to the device
/

图片内容