知识干货
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流出一个存储位置,并把字符串的地址存储在指针变量中,该变量最初指向该字符串的首字符

浙公网安备 33010602011771号