C——通过调用函数分配内存

来源:互联网 发布:js 给方法注释 编辑:程序博客网 时间:2024/04/29 09:44
1)以返回值方式返回:把动态分配的存储位置地址,赋值给指针类型返回值(不同于被调用函数的自动变量地址)
2)以形参形式返回:二级指针类型做形参

  

  1 #include <stdio.h>

  2 #include <stdlib.h>
  3 
  4 void fun(int* p){
  5     p = (int*)malloc(sizeof(int));
  6 }
  7 
  8 int main(){
  9     int* p_int = NULL;
 10     fun(p_int);
 11 
 12     printf("%d\n", *p_int);
 13     return 0;
 14 } //段错误
--------------------------------
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 int* fun(void){
  5     return (int*)malloc(sizeof(int));
  6 }
  7 
  8 int main(){
  9     int* p_int = NULL;
 10     p_int = fun();
 11 
 12     *p_int = 12345;
 13 
 14     printf("%d\n", *p_int);
 15     free(p_int);
 16     return 0;

 17 }//以返回值的方式返回动态申请的内存地址

 ---------------------------------

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 void fun(int** p){
  5     *p = (int*)malloc(sizeof(int));
  6 }
  7 
  8 int main(){
  9     int* p_int = NULL;
 10     fun(&p_int);
 11     printf("%x\n", p_int);
 12     return 0;

 13 } //通过传入参数二级指针返回

----------------------------------

不可以把局部变量的地址赋值给指针类型的返回值(生命周期决定的)

同类型结构体变量之间可以直接赋值。

0 0