&怎么区分它是引用,还是取地址符?
2014-02-17 22:17
399 查看
当&作为引用的时候,必须在定义时候就进行初始化,如果不进行初始化则会编译报错。
例如:
int N;
int &rN = N;
应用举例:
运算结果:
rN的值为:1
&rN的值为:0012FF7C
上面程序中,int &rN= N;把rN定义时候就进行初始化等于变量N,
cout<<"rN的值为:"<<rN<<endl;输出了rN的值,即N的值
cout<<"&rN的值为:"<<&rN<<endl;这里的&rN表示要取rN的地址,输出的是rN的内存地址。
当&作为取地址的时候,要跟指针联系在一起。
因为指针是用来存放地址的。
取地址就是你想取某变量(形参或者实参)的地址,就用&前置表示要取地址了,取的是该变量的内存地址。
EX:
int N = 100;
int *p;
p = &N;
int array[10] = {0};
p = &array[0];
应用举例:
输出结果:
0012FF7C
N的值*p=100
0012FF50
0012FF5C
*p=0
*(p+3)=0
引用跟指针的一个重要区别就是引用一对一,绑定一个对象(地址);指针则不然,可以一对多。
题外话:关于0012FF7C
用VC编译器运行程序的时候,经常看到一开始分配在栈中的变量都被分配到这个地址,那是为什么呢?
每个程序都有自己的独立的**G内存地址空间,你看到的地址只对你本程序有效,在物理内存中是操作系统分配的,你是看不见的
这个与操作系统有关,也与当前操作系统上运行的程序数量有关。
如果这个地址被别的程序占用,系统会另外分配其他地址的。
例如:
int N;
int &rN = N;
应用举例:
#include <iostream> using namespace std; int main() { int N; int &rN= N; N=1; cout<<"rN的值为:"<<rN<<endl; cout<<"&rN的值为:"<<&rN<<endl; return 0; }
运算结果:
rN的值为:1
&rN的值为:0012FF7C
上面程序中,int &rN= N;把rN定义时候就进行初始化等于变量N,
cout<<"rN的值为:"<<rN<<endl;输出了rN的值,即N的值
cout<<"&rN的值为:"<<&rN<<endl;这里的&rN表示要取rN的地址,输出的是rN的内存地址。
当&作为取地址的时候,要跟指针联系在一起。
因为指针是用来存放地址的。
取地址就是你想取某变量(形参或者实参)的地址,就用&前置表示要取地址了,取的是该变量的内存地址。
EX:
int N = 100;
int *p;
p = &N;
int array[10] = {0};
p = &array[0];
应用举例:
#include <iostream> using namespace std; int main() { int N = 100; int *p; p = &N; cout<<p<<endl; cout<<"N的值*p="<<*p<<endl; int array[10] = {0}; p = &array[0]; cout<<p<<endl; cout<<p+3<<endl; cout<<"*p="<<*p<<endl; cout<<"*(p+3)="<<*(p+3)<<endl; return 0; }
输出结果:
0012FF7C
N的值*p=100
0012FF50
0012FF5C
*p=0
*(p+3)=0
引用跟指针的一个重要区别就是引用一对一,绑定一个对象(地址);指针则不然,可以一对多。
题外话:关于0012FF7C
用VC编译器运行程序的时候,经常看到一开始分配在栈中的变量都被分配到这个地址,那是为什么呢?
每个程序都有自己的独立的**G内存地址空间,你看到的地址只对你本程序有效,在物理内存中是操作系统分配的,你是看不见的
这个与操作系统有关,也与当前操作系统上运行的程序数量有关。
如果这个地址被别的程序占用,系统会另外分配其他地址的。
相关文章推荐
- &既可以做取地址,也可以作引用,怎么区分?
- &如何区分是引用还是取地址
- &引用和&取地址
- linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?
- C++ 中的&:“&引用” 和“&取地址符”的区别和作用
- "Karma-How It Works"Karma怎么运行
- &符号不能被用于左值, 全局变量的地址是唯一的, 不可以修改的一个左值
- "未将对象引用设置到对象的实例"异常的原因
- <s:iterator >怎么去radio 值
- 未能添加对"Microsoft EXCEL 11.0 Object Library"的引用
- 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期
- C语言中的"NULL"到底是什么?又不是什么?有什么用?怎么用?
- 用一个二维码做下载地址,自动区分是 ios 还是 android
- 明明添加引用了,但还是提示:未能找到类型或命名空间名称xxx,这是怎么回事?
- <python>Python的函数参数传递:传值?引用?
- 关于使用<s:property value="">形式取得 数据库图片地址的注意事项
- C++中 引用&与取地址&的区别
- 用一个二维码做下载地址,自动区分是 ios 还是 android
- paip.python错误解决 "0x64024e96" 指令引用的 "0x00000135" 内存。该内存不能为 "read"。
- <button>的onmoseovert js事件改变this.src地址失败