您的位置:首页 > 编程语言 > C语言/C++

Const关键字C语言常见用法

2018-01-20 21:04 357 查看

1.const修饰变量

使用const修饰变量,使其成为有常属性的变量,即导致不可直接改变变量的值,如:

const arr[10]={1,2,3};//数组arr不能改变
const int num = 10;
mun=20;//编译错误

注意:可以间接利用指针改变变量的值,如:
const int num = 10;
int *p = (int *)#
*p = 20;
printf("%d\n", mun);
//但这份代码在VS系列编译器中无法编译运行,在VC6.0中可以编译运行,在.c文件中结果为20,但在.cpp文件中运行结果依旧是10,这是因为在.cpp(C++)环境中,编译器有优化机制,遇到这类情况会直接将值放在寄存器中,改变只能改变内存中的值,改变不了寄存器中的值

//同一作用域const不能重复定义
const int mun=10;
const int mum=20;//错误


2.const修饰指针

int a=10;
const int *p=&a;
*p=20;//错误
//表示p所指向的内容不可用p来更改
//但可以直接更改:i=20,
//或者使用其他指针改变num的值(即可以多个指针个指向同一块内存):int *q = (int *)p;
*q = 20;


int num = 10;
int num1 = 20;
int  cosnt *p = #
*p = &num1;//错误
//表示p所指向的内容可以改变,但p的值不可以改变,即p不可以指向其他地方

const int * const p;//表示p不能指向其他地方,其指向的值也不可改变

总结:无论const在 * 左边的任何地方,其指针所指的值不可改变,无论const在 * 右边的任何地方,其指针不能指向其他地方

----------
const 还可以修饰函数参数,如:
char *fun(cosnt char *p,const char *q)//还是表示p,q所指向的内容不能改变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: