// ConsoleApplication22.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
using namespace std;
void aa(int a,int*b)
{
b=new int;
b=a;
printf("b=====%d\n",*b);
}
int _tmain(int argc, _TCHAR argv[])
{
int *aaa,*bbb;
aaa=new int[1];
bbb=new int[1];
*aaa=1;
aa(aaa,bbb);
printf("bbb=====%d",bbb);
return 0;
}
你这个真的能编译通过吗?
就算真的能编译通过!!!!!
我建议你看下 b的地址和bbb的地址
本来地址已经传到aa函数里面了你倒好又new一块新地址,那你传地址的意义在哪里????
void aa(int a,int*b)
{
b=new int;
*b=a;
printf("b=====%d\n",*b);
}
这样写,你设置了b,但是因为此时b指向一个另外的地址,而指向关系不会作用到主程序,所以主程序没有变化。
void aa(int a,int**b)
{
*b=new int;
**b=a;
printf("b=====%d\n",*b);
}
主程序
int *aaa,*bbb;
aaa=new int[1];
*aaa=1;
aa(*aaa,&bbb);
printf("bbb=====%d",*bbb);
这样就可以