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

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

发布网友 发布时间:2022-04-25 19:53

我来回答

5个回答

热心网友 时间:2022-06-16 22:53

一、区别如下:

1、int定义的量是变量,它的值可以更改;而const int 定义的是一个常量,它的值不可以更改。

2、int在定义的时候,不需要初始化,而const int 在定义的时候必须初始化;

二、const的作用:把对象转换成一个常量

拓展资料

const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。

参考资料:百度百科:CONST

热心网友 时间:2022-06-16 22:53

一、const int 和int 的区别

1、返回值

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

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

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

2、取指针

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这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。

3、内容

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

二、const的作用:

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修饰时指针指向的类型时候,那么指针被指向其他地址,但是不能通过指针修改指针里面的值。

1)先从const int i说起。

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

2)const int *p

看例子:

int i1=30;

int i2=40;

const int *p=&i1;

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

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

printf("%d",*p);  //输出80

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

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

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


参考资料:百度百科——const

热心网友 时间:2022-06-16 22:54

1、内容不同

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

2、取指针

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

3、返回值

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

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

const作用:

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

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

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

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

3、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。

扩展资料:

const 和指针一起使用会有几种不同的顺序,如下所示:

1、const int *p1;

2、int const *p2;

3、int * const p3;

在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。

当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:

1、const int * const p4;

2、int const * const p5;

热心网友 时间:2022-06-16 22:54

怎么会有人说没有区别的。。没区别还要这个东西干蛋。。
在取指针方面,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这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。
清楚了const的用法,const int和int的区别就很简单,int i里的i可以被更改,是真正的变量,const int i的i不可以被更改,是有着变量外衣的常数。

热心网友 时间:2022-06-16 22:55

首先要明白const起的是强调只读属性的作用 把一个数或者指针当作常量看待
const int a = 10; a= 15;//不能直接修改常量 int a = 10; a = 15; //可以直接修改
虽然加了const不能直接修改 但是可以通过指针间接修改
通过加volatile关键字强调从变量地址读取变量的值 保证数据不会从寄存器中读取导致修改失败
const volatile int a =5; int *p = (int *)&a; *p = 2; 打印a的结果为2
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
古剑奇谭2运行错误黑屏白屏花屏了怎么办?介绍_古剑奇谭2运行错误黑屏... 古剑奇谭修改器常见问题解答 谁能给我做个PSP GT赛车中文版的金手指代码文件啊 PSP GT 赛车我下了在PSP里面也能用?怎么弄无限钱啊 TVB新五虎谁最受欢迎 陈键锋的人气如何 射阳油烟机清理服务点 女士众生相txt全集下载 哪两种食物吃完能迅速增高? pp勺子能用多久 c语言中const 是什么意思,怎么用,什么时候用? c语言中const是什么?有什么用途?求解答,谢谢,急! 怎么样才能让胡子不长那么快? 怎么脱胡子,让胡子不再长 怎样让胡子少长或不长 怎么才能不长胡子? 如何把上百的数快速开方???每次要算好久 怎样才能把皮肤变百 怎样把一百块钱变成两百块钱,再两百变四百,变到一千可以了。 怎样把几百个文件夹中的文件全部移动到另一个文件夹里? 怎样将百.度热议删掉除? 如何把百设罝为我的主页 怎样把百渡设置为首页 word 中怎样才能把“百任意字符度”改称“百度” 鞠躬尽瘁什么意思? 鞠躬尽瘁死而后已 故事情节 鞠躬尽瘁有什么含义 鞠躬尽瘁死而后已体现了什么? “鞠躬尽瘁,死而后已”是什么意思? 鞠躬尽瘁简述50字~100字 C语言对const使用该如何理解? C++中const什么意思? 计算机C语言中的关键字:const是什么意思? c语言中const、static关键字的用法? C语言CONST和DEFINE怎么用? C语言, const 这个怎么用啊?怎么好像我用了不起作用的? c语言中,const常量怎么用?const a=3.1415926;可以吗? c语言中const的用法 const在C语言中有哪些用法? 怎么从从微软原版windows10 iso镜像中获取winre.wim映像 用手机在微软官网上下载的win10ISO能用吗? 微软官方win10iso怎么安装 微软win10官方原版iso镜像怎么用 微软官方那个Windows 10 光盘映像(ISO 文件不用钱吗? 918事变来历 九一八历史资料 九一八事变的历史意义 九一八历史资料? 九一八事变发生在哪一年 918是哪一年 918事变是什么历史事件