c/c++指针参数如何传递内存

来源:互联网 发布:js toggle 编辑:程序博客网 时间:2024/05/14 08:46

例子1如下: 

       void getMemory(char *p,int num){

        p = new char [num];    

      }              

      void main(){

      char *str = NULL;

      getMemory( str,100);    

->这一步在调用时候只是  *p = str; p只是指向了str所对应指向的                                              地址,也就是修改p的内容str的内容会相应改变但是改变p本                                            身的地址却影响不了str。

 }  //所以最后结果 str 依旧指向的是NULL,并且这样做会造成内存泄漏;


例子2://通过2级指针来影响一级指针;    

        void getMemory(char **p,int num){

        *p = new char [num];

        }       

        void main(){

         char *str = NULL;

         getMemory(& str,100); 

        -> 传进去的是  **p = &str; 这样 *p则对应的是指向指针 str的实际位置,而不是str指针所指向的位置 !**p则对应的是指针str所指向的位置!这样我们通过给 *p 申请内存则实际上就是给str申请内存;


例子3 : // 看清一点 可以使用函数

       char * getMemory(int num){

       char * p = new char [num];

       return  p;

       } 

      

      void main(){

         char *str = NULL;

         str  =getMemory(100); 


    //不要忘了

        delete [] str;