char **generate_memory(int num)
{
// 循环控制变量
int i = 0;
// 声明二维指针
char **p = NULL;
// 在堆内存中 , 分配一块内存空间
// 用于存储 num 个 一维指针
// 每个 一维指针 指向一块内存空间
p = (char **)malloc( sizeof(char*) * num );
if(p == NULL)
{
return NULL;
}
// 遍历 二维指针 指向的多个 一维指针
// 并为每个 一维指针 在堆内存中 分配 20 字节内存
for(i = 0; i < num; i++)
{
// 为每个字符分配 20 字节空间
p[i] = (char *)malloc(sizeof (char) * 20);
// 向内存中写入 字符串 , 字符串内容是 i + 1
// 注意是通过通配符拼装的字符串
sprintf(p[i], "%d", i + 1);
}
return p;
}
void free_mem(char **p, int num){
// 循环控制变量
int i = 0;
// 判定指针合法性
if(p == NULL)
{
return;
}
// 释放内存
// 先释放 num 个 一级指针
for(i = 0; i < num; i++)
{
if(p[i] != NULL)
{
free(p[i]);
p[i] = NULL;
}
}
// 再释放 二级指针
if(p != NULL)
{
free(p);
}
}
c语言二级指针练习
原创
©著作权归作者所有:来自51CTO博客作者我不是萧海哇的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C语言指针的基本认识
C语言指针的基本认识
指针变量 指针类型 指针数组 -
【C 语言】二级指针作为输出 ( 指针输入 | 指针输出 | 二级指针 作为 函数形参 使用示例 )
一、二级指针、二、完整代码示例、
C 指针 二级指针 一级指针 原力计划 -
【C 语言】二级指针作为输入 ( 指针数组 | 复杂指针解读 )
一、指针数组、二、复杂指针解读、三、数组指针代码示例、
C 指针 数组 二级指针 指针数组