注册 登录
编程论坛 C++教室

c++指针函数引用问题 菜鸟提问。

narutosusdo 发布于 2011-11-08 10:23, 574 次点击
#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不是一个性质的么 都表示指针指向的对象 怎么结果就不一样了?
3 回复
#2
Toomj2011-11-08 13:46
这是传说中的传址调用
#3
jcw081201102011-11-08 14:46
关键你传递的不是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呢?
#4
鑫乐源2011-11-08 17:43
int *b // *b是定义一个名为b的int指针

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