const在c语言中的用法(C语言中常量与变量的区别)

admin 461 0

各位老铁们,大家好,今天由我来为大家分享const在c语言中的用法,以及C语言中常量与变量的区别的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

一、const在C语言中有哪些用法

const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。

(1)可以定义const常量,具有不可变性。

例如:const int Max=100; Max++会产生错误;

(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。

例如: void f(const int i){.........}编译器就会知道i是一个常量,不允许修改;

(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变!

如(1)中,如果想修改Max的内容,只需要:const int Max=you want;即可!

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

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

二、c语言里const int 和int 有什么区别,const的作用是什么。

const int&是返回这个数值的一个常量的引用。

而int是返回这个数值的一个拷贝。

int是进行拷贝构造,而const int&是返回的引用。拷贝构造更消耗时间,与此同时还用析构函数。因为产生了一个拷贝,你就可以轻易地修改拷贝的内容。

const int类型一旦定义以后就不能修改,int类型是随时可以修改的。

在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改。

听起来这像宏,其实这确实就是用来取代宏的:#define PI 3.14 const float Pi= 3.14;如果你的代码里用到了100次PI(宏),你的代码中会保存100个3.14这个常数。

鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(const float),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了。

特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。

constint* p;//p可变,p指向的内容不可变,int const* p;//p可变,p指向的内容不可变。int* const p;//p不可变,p指向的内容可变const int* const p;//p和p指向的内容都不可变。

1、可以定义const常量,具有不可变性。

例如:const int Max=100; Max++会产生错误;

2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。

例如: void f(const int i){.........}编译器就会知道i是一个常量,不允许修改;

3、可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。同宏定义一样,可以做到不变则已,一变都变!

如1中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!

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

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

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

当const修饰的是指针类型,那么指针的值就不能改变,即不能指向其他地址,但是可以通过指针修改其指向地址里面的值。

当const修饰时指针指向的类型时候,那么指针被指向其他地址,但是不能通过指针修改指针里面的值。

使用const修饰的i我们称之为符号常量。即,i不能在其他地方被重新赋值了。注意:const int i与int const i是等价的,相同的,即const与int的位置无所谓。

p=&i2;//此处,p可以在任何时候重新赋值一个新的内存地址。

i2=80;//这里能用*p=80来代替吗?答案是不能

分析:p的值是可以被修改的,即它可以重新指向另一个地址。但是不能通过*p来修改i2的值。

首先,const修饰的是整个*p(注意,是*p而不是p),所以*p是常量,是不能被赋值的。虽然p所指的i2是变量而不是常量;

其次,p前并没有用const修饰,所以p是指针变量。能被赋值重新指向另一个内存地址。

三、C语言中const是什么意思。。。

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;强烈建议在初始化时说明指针的指向,防止出现野指针!

四、VB中const用法

const类似于常用的dim函数,b中const源于constant,意思为不变常量。用const声明的是固定的整数,字符串。为了在一行中声明若干个常数,可以使用逗号将每个常数赋值分开。用这种方法声明常数时,如果使用了 Public或 Private关键字,则该关键字对该行中所有常数都有效。

在给常量赋值的表达式中,不能使用变量,用户自定义的函数,或 Visual Basic的内部函数(如 Chr)。

注意常数可以使程序更具可读性,以及易于修改。在程序运行时,常数不会象变量那样无意中被改变。

如果在声明常数时没有显式地使用 Astype子句,则该常数的数据类型是最适合其表达式的数据类型。

在 Sub、Function或 Property过程中声明的常数都是该过程的局部常数。在过程外声明的常数,在包含该声明的模块中被定义。在可以使用表达式的地方,都可以使用常数。

CONST定义的是常量,也就是说这个值在整个程序运行过程中不能被修改,首先增加了安全性

其次,比如定义常量PI(圆周率)为3.14,而事后希望改为3.1415。那么就直接修改定义处的值就可以了复次,常量的作用还有避免书写错误和易于修改。

const修饰的量为一个常量即不能被修改的量。但在C语言(C89)中的const可以不初始化但后续也就无法对其赋值,所以尽管不初始化不会出错。但要使用const修饰的量就需要对其进行初始化。

const修饰的量为一个常量,可以做左值且不能修改它的值。只有当给const修饰量的值不明确的时候会退化成一个常变量。

在一个C++工程中的多个.cpp文件中要用到某一个.cpp文件中const修饰的量是无法访问的,这是由于常量的符号类型为local的,只在当前文件可见,其余文件无法访问。如若想要访问这个const修饰的量,需在定义处加上extern。

OK,本文到此结束,希望对大家有所帮助。