知识干货

1.指针和数组区别

#define MSG "abcd"

const char arr[] = MSG;
const char *pt = MSG;

(1)“const char arr[] = MSG”

  数组形式arr[]在内存中分配一个含有5个元素的数组(加上末尾的'\0'),每个元素初始化为字符串对应字符

  通常,字符串都作为可执行文件的一部分存储在数据段中,当程序载入内存的时候,也载入了程序中的字符串,字符串存储在静态存储区中

  但是,程序在开始运行时才会为该数组分配内存,此时才将字符串拷贝到内存中,此时,字符串有两个副本,一个是在静态内存中的字符串,一个是存储在arr数组中的字符串

(2)“const char *pt = MSG”

  指针形式,也是的编译器为字符串在静态存储区预留5个元组的空间,程序开始执行时,它会为指针变量pt流出一个存储位置,并把字符串的地址存储在指针变量中,该变量最初指向该字符串的首字符

posted @ 2021-05-27 16:43  张妖刀  阅读(85)  评论(0)    收藏  举报