字符数组和字符指针的区别

c++中:

char arry[ ]="hello world";在栈上分配一个局部数组。

char *ptr =“hello world”;在全局空间分配一个全局数组。

二者异同:

(i)“hello world!”都是占用13个字节(其中最后一个为空字符结束标志);

(ii) ptr是一个char *类型的变量,占用4个字节;arry是一个char[13]类型的变量,占用13个字节;

(iii)cout<< ptr<<endl; 输出hello world!

cout<<*ptr<<endl;输出h;

cout<<arry<<endl;输出hello world!

cout<<*arry<<endl;输出h;

(iv)数组形参,不能以值传递的方式传递数组,可以写成类似数组的形式

void print(const int *);

void print(const int [ ]);

void print(const int [10]);//维度表示期待的元素个数,实际不一定;

即:数组作为参数传递个函数时传递的是指针而不是数组,传递的是数组的首地址。

(v)分配内存空间不同

ptr是分配一个全局数组,全局数组是全局变量,对应内存中的全局区域,保存在普通数据段(静态存储区);

arry是分配一个局部数组,局部数组是局部变量,对应的是内存中的栈。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容