C/C++基础之sizeof使用( 四 )

因为只有非静态类成员变量在新生成一个object的时候才需要自己的副本 。所以每个非静态成员变量在生成新object需要内存 , 而function是不需要的 。
3 sizeof 与 strlen 区别

  • sizeof 是一个操作符 , strlen 是库函数 。
  • sizeof 的参数可以是数据的类型 , 也可以是变量 , 而 strlen 只能以结尾
  • 编译器在编译时就计算出了 sizeof 的结果 , 而 strlen 函数必须在运行时才能计算出来 。并且 sizeof 计算的是数据类型占内存的大小 , 而 strlen 计算的是字符串实际的长度 。
  • 数组做 sizeof 的参数不退化 , 传递给 strlen 就退化为指针了 。如:
 int ss[20]="0123456789"; sizeof(ss)=80, //ss表示在内存中的大小 , 20*4 。 strlen(ss)    //错误 , strlen的参数只能是char* , 且必须是以“”结尾的 。 char *ss="0123456789"; sizeof(ss)=4,  //ss是指向字符串常量的字符指针 。 sizeof(*ss)=1, // *ss是第一个字符 。 参考资料
  1. https://www.cnblogs.com/Western-Trail/p/10326180.html
  2. 《C/C++实践进阶之道》

【C/C++基础之sizeof使用】


推荐阅读