char *str1="absde";
char str2[]="absde";
char str3[8]={'a',};
char str4[8]={'a','b','s','e','f','g','h','j'};
答案:
sizeof(str1)=4;
sizeof(*str1)=1;
strlen(str1)=5;
sizeof(str2)=6;
strlen(str2)=5;
sizeof(str3)=8;
strlen(str3)=1;
sizeof(str4)=8;
strlen(str4)=13;
strlen(*str1) 出错
strlen(str4)有可能为不小于 8 的其他数字,取决于内存中的数据,因为 strlen 是计算变量值
为起点的内存地址到第一个'\0'的距离,但'\0'出现位置我们是未知的。
6 月 12 日 17:49 | 添加评论 | 固定链接 | 写入日志 | C/C++
关于 Sizeof
一、sizeof 的概念
sizeof 是 C 语言的一种单目操作符,如 C 语言的++、--等。它并不是函数。sizeof 操作符以
字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数
的存储大小由操作数的类型决定。其实可以简单的理解 sizeof 是征对"类型"的。
二、sizeof 的使用方法
1、用于数据类型
sizeof 使用形式:sizeof(type),数据类型必须用括号括住。如 sizeof(int)。
2、用于变量
sizeof 使用形式:sizeof(var_name)或 sizeof var_name
变量名可以不用括号。如 sizeof (var_name),sizeof var_name 等都可以。带括号的用法更
普遍,大多数程序员采用这种形式。