1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【C 语言】二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )

【C 语言】二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )

时间:2019-03-12 20:26:03

相关推荐

【C 语言】二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )

文章目录

前言一、指针数组二、二维数组三、自定义二维指针内存

前言

绘制如下 333 种二级指针的内存模型 :

// I. 指针数组char *p1 []= {"12", "ab", "34"};// II. 二维数组char p2[3][4] = {"12", "ab", "34"};// III. 自定义二维指针内存int i = 0, num=3;char **p3 = (char **) malloc(sizeof(char) * 3);for(i = 0; i < num; i++){p[i] = (char *)malloc(sizeof (char) * 4);sprintf(p[i], "%d%d", i + 1, i + 1);}

一、指针数组

绘制如下代码内存结构图 :

// I. 指针数组char *p1[] = {"12", "ab", "34"};

指针数组 内存结构图 :

在 栈内存 中 , 是一个 指针数组 , 数组中有 333 个元素 , 都是指针数据类型 ;

指针 指向的 位置 是 全局区 的 常量区 ;

二、二维数组

绘制 二维数组 的内存模型图 :

// II. 二维数组char p2[3][4] = {"12", "ab", "34"};

绘制结果如下 :上述 二维数组 都在 栈内存中 ,

每个 一维数组 都占 444 字节 ;一维数组中 , 默认值都为 ‘\0’ 字符 ;注意 栈内存 生长方向是 从 高地址 -> 低地址 ;注意 数组 的内存方向是从 低地址 -> 高地址 ,p[0]在低地址 ,p[1]在高地址 ;全局区存在 初始化时 涉及到 的 相应字符串 常量 ;

三、自定义二维指针内存

绘制 自定义二维指针内存 的内存模型图 :

// III. 自定义二维指针内存int i = 0, num=3;char **p3 = (char **) malloc(sizeof(char) * 3);for(i = 0; i < num; i++){p[i] = (char *)malloc(sizeof (char) * 4);sprintf(p[i], "%d%d", i + 1, i + 1);}

绘制结果如下 :栈内存 中 只有一个 二维指针 , 其指向的 一维指针 都在 堆内存中 , 一维指针 也是指向 堆内存 中的数据 ;

注意 指针 指向 的是 内存块的 低地址 , 不要指错了位置 ;

全局区 中的 常量区 中 , 存在初始化的 字符串 常量 数据 ;

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