各位高手、大虾们,你们好!来CSDN坛子俩月有余,收获不少,也深知自己知识的浅薄。
本菜鸟以前只浅尝过VFP、VB、DELPHI,曾狂妄的以为自己是Visual高手,接触VC不到1年,还只会用MFC做做简单界面,比起各位高手我只好汗颜不已。昨天刚弄清楚一个白痴问题:指针参数原来是不能在函数中new的,这个问题困扰了我好久
//eg:
void fun(int *pInteger)
{
    pInteger=new int;
    *pInteger=5;
}void XXDlg::OnCalculate()
{
    int * pInt=NULL;
    fun(pInt);
    int result=*pInt;
    ....
}
结果出错了 -_-! pInt在fun(pInt);之后仍然是NULL!
百思不得其解
奇怪的是,改成这样就好了
int* fun(void)
{
    int * pInteger=new int;
    *pInteger=5;
    return pInteger;
}
void XXDlg::OnCalculate()
{
    int * pInt=fun(pInt);
    int result=*pInt;
    ....
}各位高手8要笑,我真的就这么菜。昨天无意发现自己已升五角,毕竟是菜鸟,升五角很艰辛,回答的全是最简单的问题。
坛子里一角的高手着实不少,我深有体会,看来分数并不能代表能力啊在此散分,并向各位高手讨教学好VC的诀窍。

解决方案 »

  1.   

    void fun(int **pInteger);
    我要接分
      

  2.   

    改为
    void fun(int* &pInteger)
      

  3.   

    恭喜 jf ;   改成void fun(int* &pInteger)就可以传递出new的值了。
      

  4.   

    前面已经有人答过了。
    ========================================================================
     roger_77(阿生)(……) ( ) 信誉:100    Blog  2007-3-27 10:11:48  得分: 0  
       
    改为
    void fun(int* &pInteger)========================================================================
    晕,这个问题不是C++基础问题吗?
    楼主回去好好复习一下C++吧。
      

  5.   

    参数的值传递的问题,,,,
    是可以在函数总new的
      

  6.   

    改用指针的指针 
    Fun(char** p)
    {
          *P = ENW CHAR;
    }
      

  7.   

    仍然形参与实参的道理
    改为
    void fun(int **pInteger)
    {
        *pInteger=new int;
        **pInteger=5;
    }与void fun(int pInteger)
    {
        pInteger=5
    }
    这样的函数在传递参数上有什么区别呢