CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

Pointer Reference

楼主kwib799(永生)2003-12-02 08:45:44 在 C/C++ / C++ 语言 提问

这里为什么在increment()内i的地址已经加四个字节而main()中的i却没有变  
  i的值是有pass-by-pointer传递的也就是说increment()内对i的改变将会显示到increment()外的i,那为什么这个例子中increment()内对i的改变没有显示到increment()外的i?为什么用引用(&)就可以实现那?  
  #include   <iostream>  
  using   namespace   std;  
   
  void   increment(int*   i)   {   i++;   }  
   
  int   main()   {  
      int*   i   =   0;  
      cout   <<   "i   =   "   <<   i   <<   endl;  
      increment(i);  
      cout   <<   "i   =   "   <<   i   <<   endl;  
  }   ///:~  
  问题点数:0、回复次数:3Top

1 楼liuleilover(Vietor)回复于 2003-12-02 08:57:09 得分 0

void   increment(int*   i)   {   i++;   }  
  没有改变i的值,要注意对于指针变量来说是“按值传递”的。  
  可以改为  
  void   increment(int**   i)   {   *i++;   }  
   
  int   main()   {  
      int*   i   =   0;  
      cout   <<   "i   =   "   <<   i   <<   endl;  
      increment(&i);  
      cout   <<   "i   =   "   <<   i   <<   endl;  
  }    
   
   
  Top

2 楼houdy(致力于图像/图形领域,成为有思想的程序员)回复于 2003-12-02 09:47:20 得分 0

楼上liuleilover(网犬)的回答是正解。  
  函数调用中的传指针的情况,实际上是把实参指针的值(注意实指针变量所保存的值),传给形参指针,就是行参的值和实参的值是一样的,实参没有被直接传入到函数中,所以对于指针来说,还是“按值”传递的。  
  这时候,解决这个问题的办法正好就是指针引用了。Top

3 楼lovezn0424(宁无悔program)回复于 2003-12-02 15:49:13 得分 0

搂住,你还没有明白指针和引用的区别吧。  
   
  你那样是改变了指针的值,而没有改变它所指的单元的内容。  
   
  而引用相但于是一个别名Top

相关问题

  • 《essential C++》里的问题,关于BTnode *&(reference to pointer)
  • smart pointer
  • Confusion on pointer
  • what are smart pointer and dumb pointer?
  • Invalid Pointer Operation?
  • pointer问题?
  • A pointer to a local variable
  • the problem of pointer to function
  • About the pointer,Thanks!
  • pointer问题

关键词

  • increment
  • pointer
  • 内对i的改变
  • 显示
  • main

得分解答快速导航

  • 帖主:kwib799

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo