C++入门3——指针、数组和结构

指针

  • 指针是左结合的。int p;(指向整型的指针)。char ** p;——>(char)*p,指向字符串指针的指针
  • 零:可以被用作任意类型,浮点类型、指针等;当0作为一个指针文字量时,表示一个指针当时并没有指向任何对象。C中用一个宏NULL表示0指针,C++中多直接使用0
  • 指针的加减运算:依赖于指针指向的类型。对于int *p,p++会移动int的大小;double *p,p++会移动double的大小
  • const
    • char *const p;指向字符串的指针,这个指针为常量,不能再指向其他对象
    • char const* p;const char* p;指向常量字符串的指针,这个指针可以指向其他对象,但是指针所指向的字符串对象不能有所更改
  • 引用:引用是一个对象的另一个名字,引用的出现主要是为了函数的参数和返回值
    • 引用到底有什么作用???????

    • 引用与指针的区别:
      • 引用必须不能为NULL,但是指针可以为NULL;所以指针需要做NULL检查,但是指针不需要
      • 引用必须初始化,且引用指向一个对象后,就不能再指向其他对象
      • 引用的一个简单的实现就是常量指针
      • 址传递和引用传递看起来一样,为什么还要用引用传递?
        • 实际上"引用"可以做的任何事情"指针"也都能够做,为什么还要"引用"这东西? 答案是"用适当的工具做恰如其分的工作"。
        • 指针能够毫无约束地操作内存中的任何东西,尽管指针功能强大,但是非常危险。
        • 如果的确只需要借用一下某个对象的"别名",那么就用"引用",而不要用"指针",以免发生意外。
  • 指向void的指针:一个指向任何对象类型的指针都可以赋给类型为void*的变量。对void*做其他任何操作都会引起编译错误,要使用void*,就必须显示地转换到某个指向特定类型的指针。
  • struct
    • 数组是相同类型元素的一个聚集,结构体是各种元素的聚集
    • struct的定义大括号{ }结束时必须在括号后有分号
    • 结构体对象的大小并不是简单的其成员的大小之和,因为结构体对象具有对齐的性质

你可能感兴趣的:(C++入门3——指针、数组和结构)