对字符串应用 `strlen()` 和 `sizeof()` 的不同点

查看原文

sizeof 是编译时的一元运算符,用于计算操作量的 size;strlen() 则是运行时的函数,定义于 string.h 中,虽然都有计算大小这种功能,但他们概念不同,使用场景也不同。

  • sizeof 返回 size_t 类型,可以应用在任何类型上,int 可以,struct 也可以。
  • strlen() 返回 size_t 类型,应用在一个指向数组的指针,运行的时候它会数内存地址,直到遇到了 NULL。这个函数的主要任务是算字符串长度(不包括 \0)
  • 上面提到的编译时和运行时是个很大的区别,这意味着 sizeof 不关心具体值,它只关心 type 的 size, 而 strlen 关心的是运行时的 C-style NULL-terminated string 具体值的长度。

课后习题:将 strlen 应用于 {'G','e','e','k','s',' ','f','o','r'},会得到什么值?