字符串常量属于静态存储类别,该字符串只会被内存存储一次,在整个程序生命周期中可见
int main(int argc, char* argv[])
{
char *p = "abcdefg";
char *p1 = "abcdefg";
char *p2 = "abc";
printf("p = %p\n",p);
printf("p1 = %p\n",p1);
printf("p2 = %p\n",p2);
printf("abcdefg = %p\n","abcdefg");
return 0;
}

当以字符数组的形式 并且初始化数组时,
现将字符串存储在静态存储区中,程序开始运行时才为该数组分配内存,此时才将字符串拷贝到数组中。
字符串有两个副本
本文解析了字符串常量在C/C++中的存储特性,重点讨论了字符数组初始化时静态存储区的行为,以及为何'abcdefg'看似只有一个副本但实际上是两个。讲解了程序运行时动态分配内存的情况,以及静态存储和动态存储的区别。
300

被折叠的 条评论
为什么被折叠?



