char*p 与 char p[]的区别

const char *p="Hello World";
char p1[]="Hello world";

从内存的角度来理解其区别:
const char* p是一个指针,根本没有涉及到内存分配,它指向的"Hello World"是只读的,若试图去给它赋值必然发生错误。这里的"Hello World"是字符串常量存储在文字常量区中,是只读的,const char*p 只是提供了一个指向该内存的指针。
而char p1[]是一个数组,它在堆栈中已经分配好内存,将"Hello World"复制到该内存块中。

但总的来说,"Hello World"总是存储在文字常量区,而这两种方式定义的p和p1都是在堆栈中。

const char *p="Hello World";

该语句会在堆栈中先分配一个4字节(32位系统)的指针指向"Hello World"区域。

char p1[]="Hello world";

该语句首先在堆栈上分配一个12个字节的char数组,然后将常量储存区的"Hello World"复制过来。

全部评论

相关推荐

牛客96763241...:杭电✌️也是打完招呼,没人回吗
点赞 评论 收藏
分享
亲爱滴达瓦里氏:又有嵌软又有FPGA又有硬件的,三个方向显得你的简历太杂糅了,展示不出你在某一个方向有哪些技术栈。基本上也不会有企业会去招一个本科的全栈工程师。HR一般是看你的技术栈是否和招聘要求匹配才发面试的。如果你想三个方向都试试的话还是建议你分成三份不同的简历根据不同岗位来投。多看看****或牛客上面的招聘信息,根据上面要求的技术栈来写简历。看了你的帖子经历这一块还是过关的,不过看的每个方向都会一点,但每个方向优势都不突出。 还有就是要海投,你这才几十份算不了啥。去年投了一两百份的大有人在。多去跑跑线下招聘吧,有机会继续搞份实习,后面转正机会大些。有条件就多往北上广深投吧。武汉竞争还是太激烈了。
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务