C语言中的二级指针做输出

本文探讨了C语言中二级指针作为输出参数的用法。当二级指针作为函数参数时,可以用来修改一级指针的值,避免出现野指针导致的程序崩溃。通过实例展示了如何在函数内部释放内存并更新一级指针为NULL,以确保内存安全。
摘要由CSDN通过智能技术生成

一、二级指针做输入与输出

    做输入,主调函数分配内存,被调函数使用;做输出。被调函数分配内存,把运算的结果,以指针做函数参数甩出来。 

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

//一级指针做参数
v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值