1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 -

【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 -

时间:2021-12-11 15:49:52

相关推荐

【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 -

文章目录

一、二级指针1、为 二维指针 分配内存2、为每个 一维指针 分配内存3、释放 二维指针 内存二、完整代码示例

一、二级指针

声明二级指针 :

// 声明二维指针char **p = NULL;

1、为 二维指针 分配内存

在堆内存中 , 为 二维指针 分配一块内存空间 , 用于存储 num 个 一维指针 , 每个 一维指针 指向一块内存空间 ;

// 在堆内存中 , 分配一块内存空间// 用于存储 num 个 一维指针// 每个 一维指针 指向一块内存空间p = (char **)malloc( sizeof(char*) * num );

2、为每个 一维指针 分配内存

通过遍历 , 使用 malloc 函数 在堆内存中 分配 20 字节内存 , 得到一个 一维指针变量 ;

将该 一维指针变量 分别 赋值 二维指针 指向的多个 一维指针变量 ;

通过遍历 , 向 每个 一维指针 变量 指向的内存空间中 ,

// 遍历 二维指针 指向的多个 一维指针// 并为每个 一维指针 在堆内存中 分配 20 字节内存for(i = 0; i < num; i++){// 为每个字符分配 20 字节空间p[i] = (char *)malloc(sizeof (char) * 20);// 向内存中写入 字符串 , 字符串内容是 i + 1// 注意是通过通配符拼装的字符串sprintf(p[i], "%d", i + 1);}

3、释放 二维指针 内存

先释放 二维指针 指向的 一维指针 的内存 , 这些 一维指针 指向其分配的 20 字节内存空间 , 存放了一个字符串信息 ;

// 释放内存// 先释放 num 个 一级指针for(i = 0; i < num; i++){if(p[i] != NULL){free(p[i]);p[i] = NULL;}}

然后再释放 , 二级指针 指向的 内存 , 这些内存中存储这 一级指针 数据 ;

// 再释放 二级指针if(p != NULL){free(p);}

二、完整代码示例

完整代码示例 :

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){// 二维指针 指向的 一维指针 个数int num = 4;// 声明二维指针char **p = NULL;// 循环控制变量int i = 0;// 在堆内存中 , 分配一块内存空间// 用于存储 num 个 一维指针// 每个 一维指针 指向一块内存空间p = (char **)malloc( sizeof(char*) * num );// 遍历 二维指针 指向的多个 一维指针// 并为每个 一维指针 在堆内存中 分配 20 字节内存for(i = 0; i < num; i++){// 为每个字符分配 20 字节空间p[i] = (char *)malloc(sizeof (char) * 20);// 向内存中写入 字符串 , 字符串内容是 i + 1// 注意是通过通配符拼装的字符串sprintf(p[i], "%d", i + 1);}// 打印字 二维指针 指向的 num 个 一维数组 指向的 字符串for(i = 0; i < num; i++){printf("%s\n", p[i]);}// 释放内存// 先释放 num 个 一级指针for(i = 0; i < num; i++){if(p[i] != NULL){free(p[i]);p[i] = NULL;}}// 再释放 二级指针if(p != NULL){free(p);}// 命令行不要退出system("pause");return 0;}

执行结果 :

【C 语言】二级指针作为输入 ( 自定义二级指针内存 | 为 二级指针 分配内存 - 存放 一维指针 | 为每个 一级指针 分配内存 | 释放二维指针内存 )

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。