为了账号安全,请及时绑定邮箱和手机立即绑定

c中的sizeof函数?

c中的sizeof函数?

一只名叫tom的猫 2019-02-05 15:06:21
以下代码中的两个sizeof用法有问题吗?如果有的话,是什么问题呢?void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母{for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )if( 'a'<=str[i] && str[i]<='z' )str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;UpperCase( str );cout << str << endl;
查看完整描述

2 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

参数char str[] 等同于 char *str;而str表示指向头元素的指针,而C/C++语言中把指针是看成一个是对地址的编码。在32位的系统中,这个编码是用一个32位的整数来表示的,也就是说如果你用sizeof(str)计算这个数组的长度就相当于sizeof(int)一个,其结果是4。如果你的目的是要表示这个数组的长度就得使用strlen(str)/sizeof(str[0]);strlen(str)表示的是str真是表量的长度。

查看完整回答
反对 回复 2019-03-20
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

strlen(char*)函数求的是字符串的实际长度,而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。

查看完整回答
反对 回复 2019-03-20
  • 2 回答
  • 0 关注
  • 986 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信