主函数中定义指针,子函数中分配内存

1、直观想到的就是子函数定义为返回指针类型。

int *subf(void){return malloc(sizeof(int)*10);}

int main(void){

  int *p=subf();

  free(p);

  return 0;

}

2、这里要说的是主函数调用子函数时将定义好的指针地址传入子函数,子函数通过这个地址将申请的内存关联到这个指针。

void subf(int **pp){                 //传入指针的地址也就是二级指针

    *pp=malloc(sizeof(int)*3);    //相当于主函数中的p=这里的malloc返回的指针

    (*pp)[0]=22;                       //这个*pp就是主函数中的p 是数组的头指针,可以直接看成是数组名,所以可以(*pp)[0]这样用,因为*优先级低,所以要加括号

    (*pp)[1]=33;

}

int main(void){

    int *p=NULL;

    subf(&p);

    printf("%d\n",p[0]);

    printf("%d\n",p[1]);    

 free(p);

 return 0;

}

posted @ 2021-01-22 18:58  大牛等等我  阅读(347)  评论(0编辑  收藏  举报