全局变量区 的 常量区 查询该 字符串常量是否存在 ,
如果存在 , 直接使用该 字符串常量地址 赋值给 char* 指针 ,
如果不存在 , 直接在常量区 创建一个新的字符串 , 然后将地址 赋值给...char* 指针 ;
下面的
2
个程序 , 分别演示 不同的字符串常量 和 相同的字符串常量 地址的区别 ;
一、正常程序
----
分别从两个函数中 , 获取两个不同的字符串 , 打印出这两个...();
p2 = get_str2();
// 打印 p1 , p2 指针指向的内存中的字符串数据
// p1=abc, p2=123
printf("p1=%s, p2...、获取相同的字符串内容
----
如果在
2
个函数中 , 获取的 字符串 是相同的字符串 ;
此时打印出两个函数的指针地址是相同的 , 这是因为 获取的 字符串 都是从 全局区 中的 常量区 中获取的...get_str2();
// 打印 p1 , p2 指针指向的内存中的字符串数据
// p1=abc, p2=123
printf("p1=%s, p2=%s\n", p1,