const int和int 的区别
发布网友
发布时间:2023-06-01 03:34
我来回答
共5个回答
热心网友
时间:2024-10-25 01:18
const int a; int const a; const int *a; int * const a; int const * const a ; 之间的区别?
const int a; int const a; 这两个写法是等同的,表示a是一个int常量。
const int *a; 表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。也可以写成int const* a;含义相同。
int * const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。
int const * a const;这个写法没有,倒是可以写成int const * const a;表示a是一个指针常量,初始化的时候必须固定指向一个int常量或者int变量,之后就不能再指向别的地方了,它总是把它所指向的目标当作一个int常量。也可以写成const int* const a;含义相同。
对于const int *a和int *const a,可以理解为:const int *a中const修饰*a,但是a可变,只要a指向的目标是const类型就可以;而int *const a中const修饰a,一旦指向则不能改写,但是可以修改*a的值
热心网友
时间:2024-10-25 01:19
寒...
不过先声明我以下的内容是针对C++而言...
对于除指针以外的其他常量声明句法来说,
const type name
和
type const name
的效果是相同的, 即都声明一个类型为type名为name的常量,如:
const int x = 1;
和
int const x = 1;
还有
int x = 1;
const int &y = x;
和
int const &y = x;
都是等效的, 只是写法的风格不同而已, 有人喜欢用const type name, 比如STL的代码; 另外一些人喜欢写成type const name, 比如boost中的大量代码, 其实效果都是一样的。
对于指针来说, const出现在*号的左边还是右边或是左右都有才有区别, 具体的:
const type *p; // 一个不能修改其指向对象的type型指针
// 其实和type const *p等效
type * const p; // 一个不能修改其自身指向位置的type型指针
const type * const p;
// 一个既不能修改其指向对象也不能修改其自身指向位置的type型指针
// 也和type const * const p等效
而C++中的引用当引用了一个值后,就不能把其修改为引用另外一个值,这相当于type * const p的指针, 如:
int a, b;
int &c = a; // 声明时就和a绑定在一起
c = b; // 是把b的值赋给a, 而不是把b作为c的另一个引用
所以引用的功能其实和type * const p指针是相同的, 即其引用(指向)的位置不可改变, 如果声明引用时再加上const, 其实就相当于const type * const p型的指针了, 所以声明引用时,const type &name 和 type const &name等效的...
热心网友
时间:2024-10-25 01:19
const int a 是定义一个常整型变量,变量的值不能改变;int a 是整型变量,可以改变a的值!
热心网友
时间:2024-10-25 01:20
C没有&引用这概念。。。
const int &x是说引用指向的对象是const int类型;
int const &x也是表示引用的对象是const int类型;
一样的,糊涂了。。。。
热心网友
时间:2024-10-25 01:20
const应该是read only吧
学习