“Hello world!"这是字符串常量,其本身存放在常量区.
char *s ; 此条语森顷句表示定义了一个存放字符型地址的指针变量此升陆s.
s="Hello world!";此句笑庆表示把常量区的“Hello world!"字符串的首地址赋值给s,即存放到变量s里面。
printf("%s\n",s);此句里,%s,表示从s给出的地址开始打印字符串,故输出:Hello world!
这个在部分编译器是错误的.主旦陆要是这个s="Hello world!"; 这句如果和定义那句合到一模雹顷起, 就绝对对了.
其实, char *s="Hello world!";执行完后, 内存中多出来16字节, 其实12字节保存Hello world!字符串肆棚, 4字节保存它的首地址, 即H的地址.
如果设置只读字面量池,
char *p = "abcde";
char *q = "abcde";
q和p是相等的.