一、二级指针做输入与输出
做输入,主调函数分配内存,被调函数使用;做输出。被调函数分配内存,把运算的结果,以指针做函数参数甩出来。
#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