char s1[]和char * s2的三点区别!!!

char s1[] = "hello1";

char *s2 = "hello2";

 

区别如下:

1)存储区域不同

s1、s2均存储在栈中;

"hello1"存储在栈中,因为它是一个字符串数组;

"hello2"存储在常量存储区;

 

另注:C++程序占用的内存总共分为5部分:栈区(局部变量)、堆区(malloc)、全局/静态存储区(全局变量、静态变量)、常量区(常量)和代码区(代码)。

 

2)sizeof结果不同

sizeof(s1) = 7;    // 6个字符加一个'\0'

sizeof(s2) = 4;    // 指针的大小

 

3)能否改变元素

对于s1,可以这样修改元素:*s1 = 'x';

对于s2,操作 *s2 = 'x'; 则是非法的;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值