关于int &const t和 int const& t

#include<iostream.h>

#include<stdio.h>

int main()

{

int i = 0;

int const& j = i;

int & const t = i;

const int& m = i;

i = 3;

printf("j = %d m = %d  t = %d i = %d &j = %d &m = %d &t = %d",j,m,t,i,&j,&m,&t);

getchar();

}

gcc编译结果:

int & const t = i;  不通过

#include<iostream>

#include<stdio.h>

int main()

{

int i = 0;

int const& j = i;

//int & const t = i;

const int& m = i;

i = 3;

j=4;

m=5;

printf("j = %d m = %d   i = %d &j = %d &m = %d ",j,m,i,&j,&m);

getchar();

}

gcc编译通不过语句:

i
= 3;

j=4;

#include<iostream>

#include<stdio.h>

int main()

{

int i = 0;

int const& j = i;

//int & const t = i;

const int& m = i;

i = 3;

printf("j = %d m = %d   i = %d &j = %d &m = %d ",j,m,i,&j,&m);

getchar();

}

输出:

int const &
j = i说明j是int i的常量引用,所以这里就是说i的值是不可以用t来改变的。但是,因为i是变量所以可以改变自生的值,而t是变量i的引用所以她只引用变量i的值,所以当然是i变化后的值。

时间: 2024-10-06 15:35:56

关于int &const t和 int const& t的相关文章

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别

 加有const关键字的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = &num; 1.       可以读自己 2.       可以通过*p改自己 3.       可以通过p = &data来看别人 权限最大 cons int *p = &num; 1.const放在左边意味着指向的是常量,这个常量不可以修改, 2.p = &data; (地址可以修改) 3.*p = 30;(这个时候是错误的) 这两者等价(应用:查看别人的账户) i

int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的差别

?? 加有constkeyword的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = &num; 1.       能够读自己 2.       能够通过*p改自己 3.       能够通过p = &data来看别人 权限最大 cons int *p = &num; 1.const放在左边意味着指向的是常量.这个常量不能够改动, 2.p = &data; (地址能够改动) 3.*p = 30;(这个时候是错误的) 这两者等价(应用:查看别人的账

C++ const用法 尽可能使用const [转载]

C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助. 1.const 修饰成员变量 1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-const data 5 const int a2=a1; ///const data 6 7 int * a3 = &

const形参与非const形参

在程序设计中我们会经常调用函数,调用函数就会涉及参数的问题,那么在形参列表中const形参与非const形参对传递过来的实参有什么要求呢? 先来看一个简单的例子: [java] view plain #include <iostream> #include <string> using namespace std; void print_str(const string s) { cout<<s<<endl; } int main() { print_str

[C++]const Box * p || Box const * p || Box * const p的区别

const与指针结合使用时,容易让人迷惑的是: 1. const到底是限定该指针不可再指向其它内存呢? 2. 还是禁止通过该指针修改其指向的内存块的内容?(PS:这里说的是禁止通过该指针修改内存块,所以不是不能修改,而是要通过其它方式去修改.) 下面来探究一下,先上基础代码. // Box.h author:[email protected] #ifndef _BOX_H #define _BOX_H class Box { public : Box(); int volume(); void

绝不要进行两层间接非const指针赋值给const指针

#include <stdio.h> #include <stdlib.h> int main(void) { int *p1; int * *pp1; const int * *pp2; const int n = 13; printf("起初const int n = %d\n", n); pp1 = &p1; pp2 = pp1; *pp2 = &n; /*  间接的使p1=&n  */ **pp1 = 10; printf(&qu

const与指针修改const对象

我们都知道const对象作用是声明变量为常量,在程序中除非显示转换,否则无法修改. 本文针对显示修改的情况,提醒了一种隐式的错误,以及解决办法. 考虑下面的代码: #include<iostream> int main(){ const int a=0; int *p=const_cast<int*>(&a);//&a返回int *,const_cast<int*>显示转换为int*. *p =1; int b=*p; int c=a; std::cou

const基础知识、const在C++和C中的异同、const与#define宏定义的异同

1.const基础知识 (1)用const定义常量 const int a = 5;   //定义了一个int型常量a,其值为5 (注:在C++中将其存储在符号表中(key,value),并不分配内存空间,只有在取地址或者定义为全局变量在其他文件中使用时才分配内存空间) (2)const与指针 1 const int* p1 = &a; //p1是指向常量a的指针,a的值不能通过指针p1改变 2 3 int* const p2 =&b; //p2是只能指向b的指针,b的值可以通过p2改变

const指针和指向const的指针

int *const p=&a; 这是const指针,这种指针必须在定义时就给出它所指向的地址,否则会error:uninitialized const 'p'.const指针的指针本身是const类型,所以不能修改它所指向的地址,但可以修改它所指向的值. const int *p; 这是指向const对象的指针,可以修改指向的地址,但不能通过这种指针来修改它所指向的值,即使它所指向的值不是const类型的. const int *const p=&a; 这是指向const类型的const