主函数和子函数的传值传址例子


#include<string.h>
#include<stdlib.h>
#include<stdio.h>
typedef unsigned char Uint8;
 
void *Test_Function(Uint8 **add)//返回堆空间,需要用二级指针
{

Uint8 *devInit=(Uint8 *)malloc(20*sizeof(Uint8));
memcpy(devInit,"malloc address",sizeof(devInit)*20);
*add=devInit;

return devInit;//通过函数返回值的指针,将子函数申请的堆空间地址返回
}
Test_Function_1(Uint8 **add)//栈空间不能返回,只在本函数有效
{
 Uint8   devInit[30]={"Display"};
 *add=devInit;
// printf("devInit %s\n",devInit);
}
Test_Function_2(Uint8 *add)//k改变所传地址的值
{
 Uint8   devInit[20]={"Display"};
 memcpy(add,devInit,sizeof(devInit));
 return ;
 
}
void main()
{
 Uint8  *devPara;//设备参数
 Test_Function(&devPara);
 printf("Test_Function_%s\n",devPara);//Test_Function_malloc address

  Test_Function_1(&devPara);
  printf("Test_Function_1_%s\n",devPara);//Test_Function_1_
 
  Uint8  devPara_suzhu[20];//设备参数

  Test_Function_2(devPara_suzhu);
  printf("Test_Function_2_%s\n",devPara_suzhu);//Test_Function_2_Display
 
    Uint8   *devPara_test;
 devPara_test=(Uint8 *)Test_Function(&devPara);//通过函数返回值的指针,将子函数申请的堆空间地址返回
 printf("devPara_test %s\n",devPara_test);//devPara_test malloc address
 
    Uint8  devPara_suzhu1[20];//设备参数
 memcpy(devPara_suzhu1,devPara_test,sizeof(devPara_suzhu1));
 printf("devPara_suzhu1 %s\n",devPara_suzhu1);//devPara_suzhu1 malloc address
 
 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值