主函数和子函数的传值传址例子
#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
}
总结
以上是生活随笔为你收集整理的主函数和子函数的传值传址例子的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 欧华android导航刷机,寻找欧华DV
- 下一篇: 面试题19:二叉树镜像