有一个函数
bool func1(CMyclass *mc)
{
}
我怎样实现将mc作为输出参数,使调用后,能改变mc所指向的地址。
问题比较简单,兄弟实在太菜了,最好给个例子
bool func1(CMyclass *mc)
{
}
我怎样实现将mc作为输出参数,使调用后,能改变mc所指向的地址。
问题比较简单,兄弟实在太菜了,最好给个例子
解决方案 »
- 【菜鸟首问:】关于多线程的入门级问题!请各位进来帮帮忙啊...
- 请问水平展开的树形控件怎么写?哪里有下载的
- 问题应该是这样的::::
- 关于点击图形数据窗口的返回值
- 我的光盘什么内容也看不见,但是用播放器又能播放,怎么回事?
- 谁能给我讲讲傅立叶变换呀?
- 【OpenGL】:什么是发射光?是否等于物体本身的颜色?通过glColor3f()制定的顶点颜色属于哪种光?
- 在 ATL 开发中,只加入了一个简单接口,我想得到一个可操作的窗口句柄?在线等待!
- 关于改变窗口的却省设置!
- QQ的一个重大漏洞!发送少于8个字节的数据包可以让QQ立刻关闭,攻击例程已经发布,如有虚言,天诛地灭!
- 请教 OnCommand(WPARAM wParam, LPARAM lParam) 的问题
- 我缺了哪个.h或者.lib?
你想指向什么地址,具体些。
{
}
{
(*mc)= new CMyclass;
}main()
{
CMyclass a;
CMyclass * pa= &a; func1( &pa);
// 此时的 pa 指向的是 func1中申请的新CMyclass
...
}
//看仔细了,不是脑袋非常清楚的话别乱改,很容易改出错误来的。
其实我想调用该函数后将mc的成员的值改变。如
bool func1(CMyclass *mc)
{
mc->var1=a;
mc->var2=b;
returen true;
}
我调用的时候总会报错。所以我用另外一种方法
bool func1(CMyclass *mc)
{
CMyclass temp;
temp.var1=a;
temp.var2=b;
mc=&temp;
returen true;
}
但这样做并不能将mc的值改变。谁能给我讲讲
你要改指针的值,当然要用指针的引用了或是双重指针了。你用
bool func1(CMyclass * &mc)
{
}
看看
bool func1(int *mc)
{
int temp = 2;
mc = &temp; //对mc的操作,改变了A在堆栈中的地址
或
*mc = 1; //对*mc的操作,是改变A在堆栈中的内容
}
int A = 0;
func1(&A); //传入的是A的指针(A在堆栈中的地址,该地址的内容是0), 即mc是指向变量A的.
//和引用有点象但是不一样的.再来看看引用
bool func1(int &mc)
{
mc = 1; //改变A在堆栈中的内容
} //mc不是指针所以不能象上面那样改变指针地址(指向别的地址)int A = 0;
func1(A); //传入A的引用,避免了使用指针时将指针指向一个内部变量的堆或堆栈地址那么现在用CMyclass来代替int
class CMyclass
{
int var1, var2;
}bool func1(CMyclass *mc)
{
mc->var1 = 1; //修改了A在堆栈中的第一个int类型的值
mc->var2 = 2; //修改了A在堆栈中的第二个int类型的值 returen true;
}CMyclass A;
func1(&A); //传入的是A的指针(A在堆栈中的地址,该地址的内容是两个int值)我想你调用第一种函数的时候一定是参数传的不对。
至于第二种嘛! 就是我说的传递指针时的危险之处,将一个外部指针引向一个
内部指针,你的修改只能对内部变量temp起作用,当函数返回时,temp被释放,
A就引向一个被释放的内存对象。
{
int var1, var2;
}
所声明的参数var1和var2是私有成员。
外部不能直接调用
要么用public声明
要么用函数赋值
至于你的赋值问题
指针方面没有什么问题
除非我没有明白你所云云为何物
:)
我写的完整些
class CMyclass
{
char* var1, var2;
}
bool func1(CMyclass *mc)
{
strcpy(mc->var1,"abc");//此处出错
strcpy(mc->var2,"dfg");
returen true;
}main()
{
CMyClass mc;
func(&mc);
return;
}
编译可以通过,但运行的时候就出错了。