㈠ 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 是什么意思,怎么用,什么时候用
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。
const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。
㈢ c语言中const 是什么意思
可以定义const常量,具有不可变性。
例如:const int Max=100; Max++会产生错误;便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
如(1)中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如: void f(const int i) { i=10;//error! }
可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const doublePi=3.14159; //此时并未将Pi放入RAM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。
6. 提高了效率。
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(3)c语言头文件中的const扩展阅读:const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
㈣ c语言里const int 和int 有什么区别,const的作用是什么。
一、区别如下:
1、int定义的量是变量,它的值可以更改;而const int 定义的是一个常量,它的值不可以更改。
2、int在定义的时候,不需要初始化,而const int 在定义的时候必须初始化;
二、const的作用:把对象转换成一个常量
拓展资料
const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。
㈤ 请问c 语言中的 const 是什么意思
const是C++才有的,和C语言的define一样也是用来定义常量的。即出现在const后面的是常量,是有地址的,可以用指针来指向那个常量值,但是不能修改它。
㈥ c语言问题,这些函数后边跟个const 啥意思 求解
const 限定符,它把一个对象转换成一个常量。
1.》》const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)
2.》》const与指针和引用。
(a)const与指针。
先来看看下面的几种定义:
intme;
constint*p1=&me;//p1可变,*p1不可变,此时不能用*p1来修改,但是p1可以转向
int*constp2=&me;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。
constint*constp3=&me;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向
(b)指针和引用的区别很简单,就是引用更简洁,更安全。因为引用声明时必须初始化。 引用更接近const指针,一旦与某个变量关联,就将一直效忠于他。
(c)const指针可以接受const和非const地址,但是非const指针只能接受非const地址。所以const指针的能力更强一些,所以尽量多用const指针,这是一种习惯。
3.》》(a)const与函数。由于2(c),所以经常把函数的形参类型设为const,而且多为const 引用。但是这里有一个限制,不能把不是左值的地址传递给引用。(左值包括变量,数组元素,结构成员,引用,被解除引用的指针等)。 形参是const类型的,说明该函数将不会修改其值,该函数便为const函数。
(b)const与类成员函数。先看看下面这段代码:
constStockland=Stock("hyd");
land.show();
land 是常量,但是类成员函数show无法保证不修改land,所以编译器将拒绝执行该段代码。除非你能保证show像const函数一样,但这需要另外一种语法,即:
void show() const; //声明
void Stock::show() const{} //定义
㈦ 定义在头文件中的const变量
C++中const默认为定义他的文件的局部变量,而C中认为是extern的量。
但是在c中若constint X = 10; 把“=10”去掉。
那也可以编译成功了,因为这些定义都是弱符号,C语言可以支持多个弱符号。
例如:
C/C++code
/* headerer.h */
#ifndef HEADER_H_
#define HEADER_H_
#include <stdio.h>
const int X = 10;
void func1(void);
void func2(void);
#endif
C/C++ code
/* file1.c */
#include "headerer.h"
void func1(void)
{
printf("This is file1. X =%d\n", X);
return;
}
C/C++ code
/* file2.c */
#include "headerer.h"
void func2(void)
{
printf("This is file2. X =%d\n", X);
return;
}
C/C++ code
/* main.c */
#include "headerer.h"
int main()
{
printf("This is main. X =%d\n", X);
func1();
func2();
return 0;
}
㈧ 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所指向的对象,也就是说这个指针变量以及这个指针变量所指向的对象都是不能进行修改的。
(8)c语言头文件中的const扩展阅读
使用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;强烈建议在初始化时说明指针的指向,防止出现野指针!
㈨ 计算机C语言中的关键字:const是什么意思
const
修饰数字的话就表示为常数
const
修改指针的话就表示指针指向的地址不可改变(地址中存的值可以变)
㈩ C++中const什么意思
在标准C++中,这样定义的是一个常量,用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。
const使用(类型):
1、用于指针的两种情况:const是一个左结合的类型修饰符.
int const*A;//A可变,*A不可变
int*const A;//A不可变,*A可变
2、限定函数的传递值参数:
void function(const int Var);//传递过来的参数在函数内不可以改变.
3、限定函数返回值型.
const int function();//此时const无意义
const myclassname function();//函数返回自定义类型myclassname.
4、限定函数类型.
void function()const;//常成员函数,常成员函数是不能改变成员变量值的函数。
(10)c语言头文件中的const扩展阅读:
总结:
1、指针本身是常量不可变
(char*) const pContent;
const (char*) pContent;
2、指针所指向的内容是常量不可变
const (char) *pContent;
(char) const *pContent;
3、 两者都不可变
const char* const pContent;
4、其中区别方法:
沿着*号划一条线,
如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。
5、const修饰函数参数
const修饰函数参数是它最广泛的一种用途,它表示函数体中不能修改参数的值(包括参数本身的值或者参数其中包含的值)。它可以很好
void function(const int Var); //传递过来的参数在函数内不可以改变(无意义,因为Var本身就是形参)
void function(const char* Var); //参数指针所指内容为常量不可变
void function(char* const Var); //参数指针本身为常量不可变(也无意义, 因为char* Var也是形参)
参数为引用,为了增加效率同时防止修改。
6、修饰引用参数时:
void function(const Class& Var);//引用参数在函数内不可以改变
void function(const TYPE& Var); //引用参数在函数内为常量不可变
7、const 修饰函数返回值
const修饰函数返回值其实用的并不是很多,它的含义和const修饰普通变量以及指针的含义基本相同。
(1) const int fun1() 这个其实无意义,因为参数返回本身就是赋值。
(2) const int * fun2()
8、调用时 const int *