字符串常量
#include <Iostream> using namespace std; int main() { char str1[]="Hello"; char* p1="Hello"; //指针变量指向字符串的地址 char* p2="Hello"; ..指向同一个地址 str1[0]='h'; //p1[0]='h'; //常量区不可被修改 //p2[0]='h'; //常量区不可被修改 p1="world"; p2="world"; //str1="world"; //字符串名是常量区地址,不可改变 return 0; }
原因:
全局变量,静态变量在全局区
代码放在代码区
但是代码中的字符串在程序启动时,被放到常量区,即字符串常量
只有在初始化时,字符串常量才会一一对应的放入栈区,且该字符串本质是一个地址,比如
#include <Iostream> using namespace std; int main() { printf("%c\n","how are you"+4); //打印出are you,因为相当于首地址 printf("%c\n","how are you"+4); //会打印出a,因为相当于首地址 return 0; }