• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++中的*和&

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

int a = 5;
int* b = &a;//这里写成int *b = &a;是等价的
*b = 6;

int* b = &a;表示定义一个int类型的指针b,该指针指向a变量的地址。*b = 6;表示将b指针指向地址存储的值改为为6,这时候a变量的值也变为了6,因为a变量的地址所存储值已经被修改了。

 

int a = 5;
int b = a;
b = 6;

运行以上代码后a的值为5。int b = a;表示重新开辟一个地址给变量b,该地址存储的值与a变量地址存储的值一致。b = 6;改变的是b变量的地址所存储的值,所以a变量的地址存储的值还是5。

 

int a = 5;
int& b = a;//这里写成int &b = a;是等价的
b = 6;

int& b = a;表示定义一个变量b,这里的b是一个变量名不是一个指针,但是这个b变量的地址和a变量的地址是同一个地址。所以b = 6;这里改变b变量指定的地址的值,a变量的值也改变了。

 

定义方法的时候,int add(int& a,int& b){}和int add(int a,int b){}的区别:

int add(int a,int b){}在调用方法传入参数的时候,方法内部会定义两个变量a和b,并且会为这两个变量开辟新的的地址,然后将传入的参数的值赋值到这两个地址。也就是说相对于拷贝了一份传入的参数,在方法内改变a和b的值不影响外部传入的参数的值。

int add(int& a,int& b){}在调用方法传入参数的时候,方法内部会定义两个变量a和b,但是并不会为这两个变量开辟新的地址,而是分别指向传入的两个参数的地址,这时候在方法内部改变a和b的值,相当于修改外部传入参数的值,因为他们是同一份数据。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中设置webBrowser为可编辑模式发布时间:2022-07-14
下一篇:
c++*.h和*.cpp在编译中的作用发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap