有一个函数
bool func1(CMyclass *mc)

}
我怎样实现将mc作为输出参数,使调用后,能改变mc所指向的地址。
问题比较简单,兄弟实在太菜了,最好给个例子

解决方案 »

  1.   

    我怎样实现将mc作为输出参数,使调用后,能改变mc所指向的地址?
    你想指向什么地址,具体些。
      

  2.   

    bool func1(CMyclass *&mc)

    }
      

  3.   

    bool func1(CMyclass **mc)

       (*mc)= new CMyclass;
    }main()
    {
      CMyclass a;
      CMyclass * pa= &a;  func1( &pa);
    // 此时的 pa 指向的是 func1中申请的新CMyclass
      ...
    }
    //看仔细了,不是脑袋非常清楚的话别乱改,很容易改出错误来的。
      

  4.   

    可能我说的模糊了,请原谅。
    其实我想调用该函数后将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的值改变。谁能给我讲讲
      

  5.   

    还没明白?
    你要改指针的值,当然要用指针的引用了或是双重指针了。你用
    bool func1(CMyclass * &mc)

    }
    看看
      

  6.   

    现在我们先不考虑CMyClass,就用int 来代替它.那么
    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就引向一个被释放的内存对象。
      

  7.   

    class CMyclass
    {
        int var1, var2;
    }
    所声明的参数var1和var2是私有成员。
    外部不能直接调用
    要么用public声明
    要么用函数赋值
    至于你的赋值问题
    指针方面没有什么问题
    除非我没有明白你所云云为何物
    :)
      

  8.   

    var1,var2,是公有变量
    我写的完整些
    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;
    }
    编译可以通过,但运行的时候就出错了。