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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值