int a;
a 表示一个内存空间,这个空间用来存放int类型的数据
int *a;
a 表示一个内存空间,这个空间用来存放指针,这个指针指向一个存放int类型的数据的内存地址
int **a; //指针的指针
a 表示一个内存空间,这个空间用来存放指针,这个指针指向另一个指针,这个指针指向一个存放int类型的数据的内存地址
int (a)[10] 指向数组的指针 书写时一定要加小括号,因为[]的优先级高于
a 表示一个内存空间,这个空间存放了一个指针,这个指针指向长度为10,类型为int的数组
int (*a)(int) //函数指针
a 表示一个内存空间,这个内存空间中存放了一个指针,这个指针指向一个函数,这个函数返回值类型是 int 参数类型也是int
智能指针
C++11新特性
unique_ptr 不允许多个指针共享资源 也就是说我保存的这个指针,其他指针变量不能拷贝过去
可以使用标准库中的move函数转移指针,一旦转移,原来的指针就会失效
内存单元独享
shared_ptr 多个指针共享资源 可以指向同一个内存单元
weak_ptr 可以赋值shared_ptr里的指针,但其构造或者释放对资源不产生影响
网友评论