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

例子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;



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值