问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言中const是什么?有什么用途?求解答,谢谢,急!

发布网友 发布时间:2022-04-19 14:26

我来回答

4个回答

热心网友 时间:2023-06-25 13:33

const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。

const关键字使用非常的灵活,这一点和php差别很大,php中const用来在类中定义一个常量,而在c中,const因位置不同有不同的作用,因情景不同有不同的角色,使用起来也是非常的灵活。

一、const用来修饰普通的变量(指针变量除外)的时候,const type name 和 type const name 这两种形式是完全等价的,都表示其是常量,不能进行修改。

二、const用来修饰指针变量的时候,分为以下四种情况

1、const type *name :这种情况下,const修饰的指针变量name所指向的type类型对象,也就是说指向的这个对象是不能进行修改的,因为其是常量,而指针变量确实可以进行修改的。

2、type const *name :这种情况下,const修饰的指针变量name所指向的type类型对象,意思完全同上,只是颠倒了以下顺序。

3、type * const name :这种情况下,const修饰的指针变量name,也就是说这个指针变量的值是不能进行修改的,但是指针变量所指向的对象确实可以修改的。

4、const type * const name :这种情况下,const修饰的指针变量name以及指针变量name所指向的对象,也就是说这个指针变量以及这个指针变量所指向的对象都是不能进行修改的。

扩展资料

使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。

在c中,对于const定义的指针,不赋初值编译不报错,int* const px;这种定义是不允许的。(指针常量定义的时候对其进行初始化)int const *px;这种定义是允许的。(常指针可以再定义的时候不初始化)

但是,在C++中int* const px;和const int* const px;会报错,const int* px;不报错。必须初始化指针的指向int* const px = &x;const int* const px=&x;强烈建议在初始化时说明指针的指向,防止出现野指针!

参考资料来源:百度百科—CONST

热心网友 时间:2023-06-25 13:34

const关键字的作用主要有以下几点:
1、可以定义const常量,具有不可变性。 

例如: const int Max=100; int Array[Max]; 

2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;

3、可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。

4、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;

例如: 

void f(const int i) { i=10;//error! } 

5、 为函数重载提供了一个参考。 

class A { ...... 
void f(int i) {......} //一个函数 
void f(int i) const {......} //上一个函数的重载 ...... 
}; 

6、 可以节省空间,避免不必要的内存分配。 

const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数。

所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。

7、提高效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

扩展资料:

用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。

如果定义的时候未初始化,我们知道,对于未初始化的局部变量,程序在执行的时候会自动把一个很小的负数存放进去。这样后面再给它赋初值的话就是“改变它的值”了,即发生语法错误。

用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程。全局变量的生存周期为程序运行的整个过程这个是理所当然的。

使用 const 修饰过的局部变量就有了静态特性,它的生存周期也是程序运行的整个过程。我们知道全局变量是静态的,静态的生存周期就是程序运行的整个过程。

但用const修饰过的局部变量只是有了静态特性,并没有说它变成了静态变量。

参考资料来源:百度百科-C中的CONST

热心网友 时间:2023-06-25 13:34

const int a;
int const a;
这两个是一样的 都是a这个值不可改变。
const int *a;
int * const a;
这两个就有不同了。
首先第一个是一个指针a,所指向的地址空间内容不可改变,但是a本身可以改变指向。
第二个,a本身的指向不可改变,但是他指向的空间内容可以改变。

有什么不明白的加我MSN wy030@sina.com

热心网友 时间:2023-06-25 13:35

1)、const在前面
const int nValue; //nValue是const
const char *pContent; //*pContent是const, pContent可变
const (char *) pContent;//pContent是const,*pContent可变
char* const pContent; //pContent是const,*pContent可变
const char* const pContent; //pContent和*pContent都是const

2)、const在后面,与上面的声明对等
int const nValue; // nValue是const
char const * pContent;// *pContent是const, pContent可变
(char *) const pContent;//pContent是const,*pContent可变
char* const pContent;// pContent是const,*pContent可变
char const* const pContent;// pContent和*pContent都是const
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 c语言中const 是什么意思,怎么用,什么时候用? 计算机C语言中的关键字:const是什么意思? C语言中的const是神魔意思? C++中const什么意思? c语言中const 是什么意思? const在C语言中有哪些用法? C语言中const是什么意思。。。 iphon卡贴机可以上网无法打打电话 大学生安全主题班会20m以上ppt周五要开一个班会关... 等级保护新标准(2.0)介绍 ppt课件 求《计算机网络安全基础》(第4版)的PPT课件,人民... 求关于电子商务网站网络安全存在的问题及面临的挑... 网络安全演讲稿 物联网信息安全技术PPT课件 求大神帮我做个PPT,内容有《网络安全,电信诈骗,... 小学《网络安全教育主题班会课件》 大学生校园网络安全网络文明主题班会ppt模板 《网络安全教育》主题班会课件 最新校园网络安全知识教育培训文明上网PPT 网络安全法与等级保护【优质PPT】 c语言里const int 和int 有什么区别,const的作用是... c语言const关键字的作用 c中const 作用 C语言对const使用该如何理解? C语言 什么是const指针 c语言中const、static关键字的用法? C语言中const的作用 c语言中关于const的使用 C语言数组const c语言中const修饰的到底是常量还是变量? C语言中的const string &T是什么意思 怎样注册邮箱地址? 如何注册邮箱地址 邮件地址怎么注册? 怎样注册邮箱地址 电子邮箱地址是怎么注册的? 如何注册邮箱地址? 邮箱地址怎么注册 怎么注邮箱地址 怎么注册自己的邮箱地址?