首页 > 知识库 > 正文

c语言里const int和int有什么区别?

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;在最后一种情况下,指e69da5e887aa62616964757a686964616f31333431333963针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:1、const int * const p4;2、int const * const p5;,一、const int 和int 的区别1、返回32313133353236313431303231363533e78988e69d8331333366306465值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本回答被网友采纳,一、区别如下:bai1、int定义du的zhi量是变量,它dao的值可以更改;而const int 定义的是一个常量,它的版值不可以更改。权2、int在定义的时候,不需要初始化,而const int 在定义的时候必须初始化;二、const的作用:把对象转换成一个常量拓展资料const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。参考资料:百度百科:CONST本回答被网友采纳,怎么会有人说bai没有区别的。。du没区别还要这个zhi东西干蛋。。在取dao指针方专面,const有略复杂的东西,但属是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实就是用来取代宏的:#define PI 3.14const 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不可以被更改,是有着变量外衣的常数。本回答被提问者和网友采纳,首先要明白baiconst起的是强调只读属性du的作用 把一个数zhi或者指针当作常dao量看内待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的结果为2www.shufadashi.com防采集。

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

寒 不过先声明我以下的内容是针对C++而言 对于除指针以外的其他常量声明句法来说, const type name 和 type const name 的效果是相同的, 即都声明一个类型为type名为name的常量,如: const int x = 1; 和 int const x = 1; 还有 int x =

答:怎么会有人说没有区别的。。没区别还要这个东西干蛋。。 在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实...

区别在于a值是否可以改变, 这个是常量a, a值不能改变. 如果后续出现a=4;这样的赋值, 编译器会报错. 而int a=3; a值可以改变.

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

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被重新赋值的。那个要写成int

答: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常量。而const 在定义指针时,const int *a和int const *a才有区别。const int *a 表示a只能只想常量的int;int *const a 表示a是一个常指针,只能指向某一固定的int变量。

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

int x 是实例变量:只是定义了一个int类型的引用并没有分配地址,在使用的时候才会被分配内存地址,而且不同的调用,会产生不同的x。 static int x 是静态变量:静态变量是在 程序被调用之前,已经分配了内存用于存储,所以在程序的使用过程中,

答:怎么会有人说没有区别的。。没区别还要这个东西干蛋。。 在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实...

区别在于a值是否可以改变, 这个是常量a, a值不能改变. 如果后续出现a=4;这样的赋值, 编译器会报错. 而int a=3; a值可以改变.

C语言定义变量如:int const a;与const int a;有什...

答:int const a;与const int a;没有区别。 int const *a 和const int *a 没有区别,都是一个指向一个int常量的指针,这个指针本身以后可以重赋值指向别的int常量。 而 int *const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之...

const int &x和int const &x有何区别?谢谢~

答:寒... 不过先声明我以下的内容是针对C++而言... 对于除指针以外的其他常量声明句法来说, const type name 和 type const name 的效果是相同的, 即都声明一个类型为type名为name的常量,如: const int x = 1; 和 int const x = 1; 还有 int x = ...

请问C语言,常变量const int a=3;和变量int a=3;有...

答:区别在于a值是否可以改变, 这个是常量a, a值不能改变. 如果后续出现a=4;这样的赋值, 编译器会报错. 而int a=3; a值可以改变.

C语言中 const Int n=5,与Int n=5有什么区别?

答:const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被重新赋值的。那个要写成int

const int a和int const a有什么区别?

答:没有区别的,都是表示不可改变数值的int常量。而const 在定义指针时,const int *a和int const *a才有区别。const int *a 表示a只能只想常量的int;int *const a 表示a是一个常指针,只能指向某一固定的int变量。

int *const &x与int *&x的区别是什么

答:int x 是实例变量:只是定义了一个int类型的引用并没有分配地址,在使用的时候才会被分配内存地址,而且不同的调用,会产生不同的x。 static int x 是静态变量:静态变量是在 程序被调用之前,已经分配了内存用于存储,所以在程序的使用过程中,...

C语言const int *pi与int *const pi的区别大神们帮...

答:一、从const int i 说起 你知道我们声明一个变量时象这样int i ;这个i是可能在它处重新变赋值的。如下: int i = 0; /* . . . */ i = 20; /*这里重新赋值了*/ 不过有一天我的程序可能需要这样一个变量(暂且称它变量),在声明时就赋一个初始值...

1、内容不同constint*p;//p可变,p指向的内容不可变,intconst*p;//p可变,p指向的内容不可变。 int*constp;//p不可变,p指向的内容可变 constint*constp;//p和p指向的内容都不e69da5e6ba903231313335323631343130323136353331333433626561可变。2、取指针constint类型一旦定义以后就不能修改,int类型是随时可以修改的。3、返回值constint是返回这个数值的一个常量的引用。而int是返回这个数值的一个拷贝。const作用:1、可以定义const常量,具有不可变性。例如:constintMax=100;Max++会产生错误。2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:voidf(constinti){.........}编译器就会知道i是一个常量,不允许修改。3、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。扩展资料:const和指针一起使用会有几种不同的顺序,如下所示:1、const int *p1;2、int const *p2;3、int * constp3;在最后一种情况下,指针是只读的,也就是p3本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是p1、p2本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:1、const int * constp4;2、int const * constp5;,一、区别如下:来1、int定义的量是变量自,它的值可以更2113改;而constint定义5261的是一个常量,它的值4102不可以更改。2、int在定1653义的时候,不需要初始化,而constint在定义的时候必须初始化;二、const的作用:把对象转换成一个常量拓展资料const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。参考资料:搜狗百科:CONST,怎么会有来人说没有区别的。。没区源别还要这个东2113西干蛋。。在取5261指针方面4102,const有略复杂1653的东西,但是常规的、合理的操作不应该涉及到,因为constint是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改,听起来这像宏,其实这确实就是用来取代宏的:#definePI3.14constfloatPi=3.14;如果你的代码里用到了100次PI(宏),你的代码中会保存100个3.14这个常数,鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(constfloat),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了,特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。清楚了const的用法,constint和int的区别就很简单,inti里的i可以被更改,是真正的变量,constinti的i不可以被更改,是有着变量外衣的常数内容来自www.shufadashi.com请勿采集。

声明:本网内容旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。

你可能还关注
热门推荐
今日推荐 更多