一、二级指针做输入与输出
做输入,主调函数分配内存,被调函数使用;做输出。被调函数分配内存,把运算的结果,以指针做函数参数甩出来。
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
//求文件中的两段话的长度
//二级指针做输出,被调函数分配内存。
int GetMem(char **myp1, int *mylen1, char **myp2, int *mylen2)
{
char *tmp1 =NULL, *tmp2 = NULL;
tmp1 = (char *)malloc(100); //在堆区分配内存,并使得tmp1指向这块内存的首地址。
if (tmp1 == NULL)
{
return -1;
}
strcpy(tmp1, "asdfghjkl");
*mylen1 = strlen(tmp1); //通过指针间接修改实参的值。
*myp1 = tmp1;
tmp2 = (char *)malloc(100);
if (tmp2 == NULL)
{
return -2;
}
strcpy(tmp2, "11122233333");
*mylen2 = strlen(tmp2);
*myp2 = tmp2; //间接修改实参p1的值
return 0;
}
//*二级指针做参数
void FreeMem(char **myp)
{
char *tmp = NULL;
if (myp == NULL)
{
return -1;
}
tmp = *myp;
free(tmp);
*myp = NULL;
}
//一级指针做参数
void freemem(char *myp)
{
char *tmp = NULL;
if (tmp == NULL)
{
return -1;
}
tmp = myp;
free(tmp);
myp

本文探讨了C语言中二级指针作为输出参数的用法。当二级指针作为函数参数时,可以用来修改一级指针的值,避免出现野指针导致的程序崩溃。通过实例展示了如何在函数内部释放内存并更新一级指针为NULL,以确保内存安全。
最低0.47元/天 解锁文章
3372

被折叠的 条评论
为什么被折叠?



