#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
}