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
//}
}
}