Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
57 lines (43 sloc) 2.45 KB

缘起

  • 2016-12-01开始看的并整理在了.one文本里(2016-10-04),2017-10-03再度复习一下,移到.md文件里。

内容

10.1 strlen和sizeof的区别

  • sizeof是操作符;返回的是参数所占的内存数;
    • char *str1="Hello"; sizeof(*str1) 结果是1 //表示字符串首地址的内容
  • strlen是函数;返回参数的字符串长度;strlen的参数是字符串,必须以串结束符"\0"结尾
  • [代码]
  • 做腾讯题的时候,还sizeof()求了结构体或类对象的值呢。尤其是虚函数时

10.2 const修饰符

  • const的典型应用:
    • 取代预编译。 const类型定义:变量或对象的值不能被更新。
    • 保护被修饰的内容,防止被意外地修改。
    • 编译器通常不为普通的const常量分配存储空间,将它保存在符号表中,使它成为一个编译期间的常量。
      • 没有了存储和读内存的操作,它的效率也很高。
      • 可以节省空间,避免不必要的内存分配。
  • const修饰符在函数体内修饰局部变量
    • int const n=1;const int n=1;是等价的。要清楚的知道const修饰的对象是谁,这里都是n,与类型无关。
  • const在函数声明时修饰参数
  • const作为全局变量
    • 使用extern修饰
    • 使用static修饰

10.3 volatile修饰符

  • 对嵌入式编程比较重要。

10.4 void和void*的区别

  • 如果没有对函数的返回值声明任何的类型,那么默认返回值为int型,而不是void类型.
  • void* n;是一种万能指针。

10.5 #define和typedef的本质区别

  • typedef不是一个预处理指令.同时typedef需要以分号;结束.是在编译的过程中进行的.

10.6 条件语句的选用

10.7 函数realloc,malloc和calloc的区别

10.8 函数和宏

  • 宏是在预处理阶段完成的,只做字符串的替换,而不求值,也不为其分配内存. 替换时,使代码变长,不占用编译时间,所以并不进行语法检查。利用宏可以得到多个返回值。
  • 函数是在程序运行阶段进行的,需要为其分配内存,占用运行时间;同时函数调用进行语法检查。函数只有一个返回值。

10.9 运算符==,=和!=的区别

  • ==和!==是关系运算符,优先级要高于=。
  • =是赋值运算符。

10.10 类型转换

  • 隐式转换
  • 显式转换

收获

  • 2017-10-03花了1个番茄钟,只是整理了全部框架和10.1的全部内容。