社区
C语言
帖子详情
传引用得到的是指针
bazookier
2009-10-09 10:04:54
比如比较复杂的程序抽象成如下
void getFunc(int& a)
{
a=2; //<----------------跟到这里
}
int main(int argc,char* argv[])
{
int * p;
int i=1;
p=&i;
getFunc(*p);
return 0;
}
用gdb跟踪到这里,发现a是个指针而不是值。这是怎么回事。使用的是GNU,是不是编译器有问题?
...全文
74
9
打赏
收藏
传引用得到的是指针
比如比较复杂的程序抽象成如下 void getFunc(int& a) { a=2; //<----------------跟到这里 } int main(int argc,char* argv[]) { int * p; int i=1; p=&i; getFunc(*p); return 0; } 用gdb跟踪到这里,发现a是个指针而不是值。这是怎么回事。使用的是GNU,是不是编译器有问题?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bazookier
2009-11-01
打赏
举报
回复
问题解决!
失落的凡凡
2009-10-09
打赏
举报
回复
楼主是用的GDB么?我调试时 p a是这样显示的:
&1= (int &) @0x22cc90: 1
失落的凡凡
2009-10-09
打赏
举报
回复
我也试试
必成桂
2009-10-09
打赏
举报
回复
毫无疑问a的type是int &。
引用的底层实现就是指针。我是在想不到还有什么别的机制能实现了。
bitxinhai
2009-10-09
打赏
举报
回复
void getFunc(int& a)
{
a=2;
}
int main(int argc,char* argv[])
{
int * p;
int i=1;
getFunc(i); //对于引用,只需要把普通变量传过去就行了
return 0;
}
fisker0303
2009-10-09
打赏
举报
回复
如果不是release版产生了优化,那可能就是调试器有问题。
fisker0303
2009-10-09
打赏
举报
回复
vc2005中显示正常,值为“1”
fox000002
2009-10-09
打赏
举报
回复
底层的话,当然用的是一个内存地址
不知 lz 怎么知道是不是指针
illuminati
2009-10-09
打赏
举报
回复
关注中
传
指针
和
传
指针
引用
的区别(
指针
和
引用
的区别)
一、
传
指针
和
传
指针
引用
的区别 相同点: 都是地址的概念。
指针
指向一块内存,它的内容是所指内存的地址;而
引用
则是某块内存的别名。 不同点: 1.
指针
是一个实体,而
引用
仅是个别名 2.
引用
只能在定义时被初始化一次,之后不可变;
指针
可变;
引用
“从一而终”,
指针
可以“见异思迁”; 3.
引用
没有const,
指针
有const,const的
指针
不可变;(具体指没有int& const a这种形
引用
和
指针
的区别?
传
引用
比
传
指针
安全,为什么?如果我使用常量
指针
难道不行吗?
引用
和
指针
的区别 (1)
引用
在创建的同时必须初始化,即
引用
到一个有效的对象;而
指针
在定义的时候不必初始化,可以在定义后面的任何地方重新赋值. (2) 不存在NULL
引用
,
引用
必须与合法的存储单元关联;而
指针
则可以是NULL. (3)
引用
一旦被初始化为指向一个对象,它就不能被改变为另一个对象的
引用
;而
指针
在任何时候都可以改变为指向另一个对象.给
引用
赋值并不是改变它和原始对象的绑定关系. ...
传
值,
传
指针
和
传
引用
区别和联系
C++写了很多年,有一天,写着写着代码。竟然自己发现对
传
值,
传
指针
,
传
引用
这个每天都在用的
传
递方式的区别还不是很清楚。以为自己懂了,其实还理解得还不够深入,基础还需要花时间琢磨。今天参考了很多篇博客和书籍做些总结。其实,不用分为三类,只有两类即可。
传
值和
传
引用
。为什么会出现
传
地址(即
传
指针
)呢?本质就是大家一致对
传
值和
传
地址概念的理解错误导致,也是对
指针
的概念的理解错误导致。概念
指针
:
指针
就是一个变
传
指针
和
传
引用
的区别以及
指针
和
引用
的区别
一、
引用
:
引用
的定义:
引用
是给另外一个变量其别名,所以
引用
不会分配内存空间,
引用
是引入了对象的一个同义词。 例如: Point pt1(10,10); Point &pt2 = pt1; 上述的代码,定义了pt2为pt1的
引用
。通过这样的定义,pt2和pt1表示同一对象,需要特别注意的是,
引用
并不产生对象的副本,仅仅是对象的同义词,因此当执行下面的语句之后 pt1.of...
函数参数
传
值、
传
引用
和
传
指针
的区别
系列文章目录 前言 在C和C++开发中,主要会用到不同的函数参数
传
递形式 一、pandas是什么?
指针
是一种数据类型,
指针
和其他整形、浮点型等变量没有什么区别,只不过其他变量比如整型变量,它的变量数值一般是个整数,比如1,2等;但是
指针
的变量数值是一个地址而已。
传
值:将实参
传
给形参,赋值完后实参和形参没有任何联系了,因此形参的改变对实参没有影响。
传
地址:是把实参的地址
传
给形参,这也形参的改变就会影响到实参。因为形参和实参对象指向的地址是一样的,所以因此形参指向的对象就是实参的对象。
传
地址本质也是值的
传
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章