练习题

char *str_1 = "12345";
char str_2[ ] = "12345";
char str_3[5] = { '1' };
char str_4[5] = { '1', '2', '3', '4', '5' };

表达式                                    值
sizeof( str_1 )                    ___4_____
                                         浅析:sizeof(指针)——求指针大小—— 一般32位机指针大小为4字节

sizeof( *str_1 )                   ___1_____
                                         浅析:sizeof(*指针)——求指针所指向的内容的大小——此处*str_1得到一个字符,大小为1字节

strlen( str_1 )                    ___5_____
                                         浅析:strlen库函数,求一个以字符'\0'结尾的c字符串长度(不计算'\0'),编译器默认在"12345"字符串后添加结束字符'\0',因此此空得到长度为5

sizeof( str_2 )                    ___6_____
                                         浅析:sizeof(数组)——求数组大小——此题str_2数组大小为6!因为编译器会自动在字符串"12345"最后一个字符后添加结束字符'\0',因此存在数组str_2中的实际元素有6个 str_2 == {'1','2','3','4','5','\0'}

strlen( str_2 )                    ___5_____
                                         浅析:道理同strlen( str_1 );得到字符串长度为5

sizeof( str_3 )                    ___5_____
                                         浅析:sizeof(数组),str_3被定义为大小是5的数组,所以答案为5

strlen( str_3 )                    ___1_____
                                         浅析:str_3为一个大小为5的字符数组,用一个字符初始化之,其余元素默认'\0',因此strlen只计算一个字符'1',遇到str_3的第二个元素'\0'后即终止计算,得到结果1

sizeof( str_4 )                    ___5_____
                                         浅析:sizeof求数组大小

strlen( str_4 )                    _不确定值_
                                         浅析:str_4被定义为大小为5的数组,初始化保存5个字符,因此,此数组无字符串结束符'\0',而库函数strlen在计算时遇到'\0'才停止,我们无法预知内存中那个地方存放了'\0',因此答案无法确定

strlen( *str_1 )                   __error___
                                         浅析:strlen要求形参为const char * ,而 *str_1 得到的是一个字符类型 char ,因此错误
有什么问题欢迎大家随时来此讨论交流,共同学习共同进步

本文出自 “Bill_Hoo专栏” 博客,请务必保留此出处http://billhoo.blog.51cto.com/2337751/648827

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值