900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数

【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数

时间:2022-11-29 14:54:26

相关推荐

【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数

文章目录

一、字符串 一级指针 内存模型1、指定大小字符数组2、未指定大小字符数组3、指向常量字符串的指针4、指向堆内存的指针

一、字符串 一级指针 内存模型

#include <stdio.h>#include <string.h>#include <stdlib.h>/** 函数入口*/int main(int argc, char **args){// 栈内存数组 指定大小char array[5] = "abc";// 栈内存数组 不指定大小char array2[] = "123";// 定义指针 , 使用字符串赋值char *p = "def";// 定义指针 , 在堆内存中分配 5 字节空间char *p2 = malloc(5);// 将字符串拷贝到堆内存中strcpy(p2, "456");system("pause");return 0;}

绘制上述代码的 内存四区 模型 ;

1、指定大小字符数组

下面的代码中 , 在栈内存中 , 声明 数组 , 数组大小 555 字节 , 为其赋值时 , 使用了 “abc” 字符串常量 ;

在 全局区 的 常量区 存放 “abc” 字符串常量 ;

使用 “abc” 常量为 数组 赋值 , 注意数组的最后一位是\0字符 ;

// 栈内存数组 指定大小char array[5] = "abc";

2、未指定大小字符数组

在 栈内存 中 , 声明 不指定大小的 字符数组 , 初始化 “123” 字符串 ;

在 全局区 的 常量区 中 , 存放 “123” 常量字符串 ;

在 栈区 的array2数组中 , 存放 “123” 字符串内容 , 注意最后的\0字符 , 该数组大小 444 字节 ;

// 栈内存数组 不指定大小char array2[] = "123";

3、指向常量字符串的指针

在 栈内存 中 , 定义 局部变量 指针p, 没有为该指针分配内存 , 该指针指向 字符串常量 “def” ;

在 全局区 的 常量区 中 , 定义 字符串常量 “def” ;

// 定义指针 , 使用字符串赋值char *p = "def";

4、指向堆内存的指针

先在 堆内存 中 , 分配 5 字节内存 ;

然后 在 全局区 的常量区 中 , 定义 字符串常量 “456” ;

最后 将 字符串常量 “456” 拷贝到 堆内存 分配的 内存中 ;

// 定义指针 , 在堆内存中分配 5 字节空间char *p2 = malloc(5);// 将字符串拷贝到堆内存中strcpy(p2, "456");

【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

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