标题:c++指针函数引用问题 菜鸟提问。
只看楼主
narutosusdo
Rank: 2
等 级:论坛游民
帖 子:45
专家分:25
注 册:2011-5-30
结帖率:70%
已结贴  问题点数:20 回复次数:3 
c++指针函数引用问题 菜鸟提问。
#include "stdafx.h"
#include<iostream.>;
using namespace std;
int a(int *b,int *c){
  int i;
  i=*b;
  *b=*c;
  *c=i;
  return(i=*b+*c);
}
void main(){
  int e=1,f=2,g;
  int *h,*j;
  h=&e,j=&f;
  g=a(h,j);
  cout<<e<<"  "<<f<<"  "<<g<<endl;
  cin>>e;
}   这段程序引用函数a(),形式参数为指针类型,可是如改为a(int b,int c)就不能交换了  为什么?int *b跟int b,这里的*b和b不是一个性质的么 都表示指针指向的对象 怎么结果就不一样了?
搜索更多相关主题的帖子: include return 
2011-11-08 10:23
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
得分:0 
这是传说中的传址调用
2011-11-08 13:46
jcw08120110
Rank: 8Rank: 8
来 自:南京
等 级:蝙蝠侠
帖 子:272
专家分:742
注 册:2009-6-8
得分:20 
关键你传递的不是e啊 而是&e  也就是e的地址嘛~ 函数根据这个e的地址里面的东西进行操作 那么e的值也就改变了嘛!意思就是a(int *b,int *c) int *b=&e;  改变*b  e 也就改变了!
如果传递的是e 也就是直接传递数据a(int b,int c) 意思就是  int b=e;int c=f; 那么对b,c的操作怎么可能影响到e,f呢?

君生我未生 我生君以老
2011-11-08 14:46
鑫乐源
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:27
专家分:150
注 册:2011-10-20
得分:0 
int *b // *b是定义一个名为b的int指针

*b = *c // *b是解引用

不要和编译器比智商。
2011-11-08 17:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354583-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.346556 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved