您的位置:首页 > 其它

二级指针作输入之内存模型三

2016-04-01 21:46 375 查看
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//堆上分配一个二维空间并拷贝数据
char **getMem(int n)
{
int i = 0;
char **buf = (char **)malloc(n * sizeof(char *)); //char *buf[3]
if (buf == NULL)
{
return NULL;
}
for (i = 0; i < n; i++)
{
buf[i] = (char *)malloc(30 * sizeof(char));
char str[30];
sprintf(str, "test%d%d", i, i);
strcpy(buf[i], str);
}

return buf;
}

//打印API
void print_buf(char **buf, int n)
{
int i = 0;
for (i = 0; i < n; i++)
{
printf("%s, ", buf[i]);
}
printf("\n");
}

//释放API
void free_buf(char **buf, int n)
{
int i = 0;
for (i = 0; i < n; i++)
{
free(buf[i]);
buf[i] = NULL;
}

if (buf != NULL)
{
free(buf);
buf = NULL;
}

}

int main(void)
{
char **buf = NULL;
int n = 3;

buf = getMem(n);

if (buf == NULL)
{
printf("getMem err\n");
return -1;
}

print_buf(buf, n);

free_buf(buf, n);
buf = NULL;

printf("\n");
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: