A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯大卫 中级黑马   /  2014-9-1 19:15  /  2556 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

char arr[10] = "What?";
              int len_one = strlen(arr);
              int len_two = sizeof(arr);
    输出结果为:5 and 10
    点评:sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。strlen只关心存储的数据内容,不关心空间的大小和类型。
sizeof()返回的是分配数组空间大小,数组空间大小不是由里边的元素决定的吗

6 个回复

倒序浏览
sizeof -- 是运算符,不是函数。sizeof 计算 某变量类型 占用字节数;
strlen -- 是函数,计算字符串长度。
回复 使用道具 举报
这里是 char arr[10] = "What?"; arr表示数组名,是一种数据结构,这个数据结构已经被分配大小的固定空间了,你赋值不赋值那个空间都在,即使你只给数组里面只有一个元素(另外没赋值的元素由编译器赋值),所以sizeof(arr)的出来的这个数据结构的大小,如果改成这样char *arr = "What?"; 那么sizeof(arr) 的结果就为4了
回复 使用道具 举报
不是的,char arr[10]一使用就分配了10个字节的存储空间。你说的数组空间大小由里边的元素决定是这种情况,char arr[]="What?",这样就是5个字节的空间了。
回复 使用道具 举报
sizeof为运算符,用来计算常量、变量和数据类型的字节数
strlen为函数,用来计算字符串长度
不同点:
1.计算对象不同,sizeof是计算常量、变量和数据类型,strlen是计算字符串
2.sizeof是运算符,strlen是函数
回复 使用道具 举报
strlen是用来计算字符串长度的,而sizeof就用来计算常量或者变量的字节数
回复 使用道具 举报
百度一下其实就能找到很多资料的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马