美文网首页
char *p = hello和char p[ ] = hell

char *p = hello和char p[ ] = hell

作者: yshi2017 | 来源:发表于2018-06-23 06:46 被阅读0次

    char *p = " hello world "; 和 char p[ ] = " hello world ! ";

    所有的字符串常量存放在静态存储区。【字符串常量是贯穿整个程序的生命周期的】,所以1,2只是是否能够访问到的问题,

    1.    字符串常量的地址赋值给指针常量,改指针常量指向的字符串的字符不允许修改。不同的字符串指针指向同一个字符串时候,所有的指针指向同一个地址。

    2.    将字符串的每个字符赋值给数组,该指针指向数组的首地址,

    在 char p [ ] = "heloo "; 中, ” hello “ 是一个字符串常量,存放在静态数据区,但是把一个字符串常量赋值给了一个局部变量(char p [ ] 型数组),该局部变量是存放在栈中的。这样子就有两块内容一样的内存,意思就是说 : char p [ ] = :hello  : 这条语句让 ”hello“ 在内存中有两条拷贝,一份在动态分布的栈中,一份在静态存储区。而char *p = ''hello ''  第二个是指向静态存储区的指针,此变量指向的内存在程序运行中不会被清空。

    相关文章

      网友评论

          本文标题:char *p = hello和char p[ ] = hell

          本文链接:https://www.haomeiwen.com/subject/kvyaeftx.html