【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )
文章目錄
- 一、字符串 一級指針 內(nèi)存模型
- 1、指定大小字符數(shù)組
- 2、未指定大小字符數(shù)組
- 3、指向常量字符串的指針
- 4、指向堆內(nèi)存的指針
一、字符串 一級指針 內(nèi)存模型
#include <stdio.h> #include <string.h> #include <stdlib.h>/** 函數(shù)入口*/ int main(int argc, char **args) {// 棧內(nèi)存數(shù)組 指定大小char array[5] = "abc";// 棧內(nèi)存數(shù)組 不指定大小char array2[] = "123";// 定義指針 , 使用字符串賦值char *p = "def";// 定義指針 , 在堆內(nèi)存中分配 5 字節(jié)空間char *p2 = malloc(5);// 將字符串拷貝到堆內(nèi)存中strcpy(p2, "456");system("pause");return 0; }
繪制上述代碼的 內(nèi)存四區(qū) 模型 ;
1、指定大小字符數(shù)組
下面的代碼中 , 在棧內(nèi)存中 , 聲明 數(shù)組 , 數(shù)組大小 555 字節(jié) , 為其賦值時(shí) , 使用了 “abc” 字符串常量 ;
在 全局區(qū) 的 常量區(qū) 存放 “abc” 字符串常量 ;
使用 “abc” 常量為 數(shù)組 賦值 , 注意數(shù)組的最后一位是 \0 字符 ;
// 棧內(nèi)存數(shù)組 指定大小char array[5] = "abc";2、未指定大小字符數(shù)組
在 棧內(nèi)存 中 , 聲明 不指定大小的 字符數(shù)組 , 初始化 “123” 字符串 ;
在 全局區(qū) 的 常量區(qū) 中 , 存放 “123” 常量字符串 ;
在 棧區(qū) 的 array2 數(shù)組中 , 存放 “123” 字符串內(nèi)容 , 注意最后的 \0 字符 , 該數(shù)組大小 444 字節(jié) ;
// 棧內(nèi)存數(shù)組 不指定大小char array2[] = "123";3、指向常量字符串的指針
在 棧內(nèi)存 中 , 定義 局部變量 指針 p , 沒有為該指針分配內(nèi)存 , 該指針指向 字符串常量 “def” ;
在 全局區(qū) 的 常量區(qū) 中 , 定義 字符串常量 “def” ;
// 定義指針 , 使用字符串賦值char *p = "def";4、指向堆內(nèi)存的指針
先在 堆內(nèi)存 中 , 分配 5 字節(jié)內(nèi)存 ;
然后 在 全局區(qū) 的常量區(qū) 中 , 定義 字符串常量 “456” ;
最后 將 字符串常量 “456” 拷貝到 堆內(nèi)存 分配的 內(nèi)存中 ;
// 定義指針 , 在堆內(nèi)存中分配 5 字節(jié)空間char *p2 = malloc(5);// 將字符串拷貝到堆內(nèi)存中strcpy(p2, "456"); 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】数组与指针操作 ( 数组符号
- 下一篇: 【C 语言】字符串拷贝 ( 字符串拷贝业