![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
指针
文章平均质量分 93
SOC罗三炮
嵌入式软件开发,ARM CPU架构研究,某厂芯片SOC系统验证工程师
展开
-
C++智能指针shared_ptr、unique_ptr以及weak_ptr
使用智能指针的目的:为了更容易更安全的使用动态内存智能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。新标准库提供的两个智能指针shared_ptr和unique_ptr的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象 unique_ptr则“独占”所指向的对象 weak_ptr则是一种弱引用,指向shared_ptr所管理的对象shared_ptr类智能指针也是模板,所以在创建一个智能指针时,必须提供指针指向的类型:shared...原创 2021-04-27 10:59:08 · 5542 阅读 · 3 评论 -
C++智能指针模板类auto_ptr,unique_ptr,shared_ptr和weak_ptr
智能指针是行为类似指针的类对象。这三个智能指针模板(auto_ptr,unique_ptr和shared_ptr)都定义了类似指针的对象,可以将new获得(直接或间接)的地址赋给这种 对象。当智能指针过期后,其析构函数使用delete来释放内存。因此,如果将new返回的地址赋给这些对象,将无需记住稍后释放内存:在智能指针过期后,这些内存将自动被释放。要创建智能指针对象,必须包含头文件memory,该文件模板定义。然后使用通常的模板语法来实例化所需类型的指针。例如,模板auto_ptr包含如下的构造函数:原创 2020-10-28 21:34:52 · 730 阅读 · 0 评论 -
C语言复杂的声明(数组指针和函数指针)
指针数组和数组指针:int a[8][8]; //一个内含int数组的数组int ** ptr;//指向指针的指针,被指向的指针指向intint * b[10];//指针数组,内含10个元素的数组,每个元素都是指向int类型的指针int (* b)[10];//数组指针,一个指向数组的指针,该数组有10个int类型的值int * c[3][4];//二维指针数组,每个元素都是指向int类型的指针int (* d)[3][4];//一个指向二维数组的指针,该数组中含int类型值int (* d[原创 2020-09-22 16:36:01 · 828 阅读 · 0 评论 -
C语言和C++指针常量和常量指针
指针常量指针常量,用指针修饰的常量,它的本质是一个常量 int a = 111, b = 222; int * const p = &a; printf("%p\n",p); printf("%d\n",*p); *p = 333; printf("%d\n",*p); p = &b; //报错,p的值不能更改,[Error] assignment of read-only variable 'p' 结果 000000000024FE3C 111 333这原创 2020-09-27 20:20:28 · 502 阅读 · 0 评论 -
C++内存分配new和delete的使用、内存的五个区
数组声明有一个限制:被声明的长度必须是编译时常量,即在程序运行之前,编译器必须能在编译时确定长度,这意味着只限于用常量如数字字面量、enum值和用#define指令创建的常量。动态分配内存语法:指针 = new 类型;//请求创建单个数据对象指针 = new 类型 [数值];//请求创建多个数据对象当内存不需要时,要使用delete来释放它。delete 指针;delete [] 指针;如果内存分配失败,会返回空指针nullptr...原创 2020-10-13 11:10:00 · 1230 阅读 · 0 评论 -
C/C++数组和指针学习总结
指针是一个存储内存地址的变量(或数据对象)与指针相关的运算符地址运算符 &后跟一个变量名时,&给出该变量的地址。&a表示变量a的地址地址运算符 *后跟一个指针名或地址时,* 给出存储在指针地址上的值。*b=a;//表示把a指向的地址上的值赋给b。声明指针声明指针变量时,必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间。一些指针操作需要知道操作对象的大小。另外,程序必须知道储存在指定地址上的数据类型。int * pi;//pi是指向int类型变原创 2020-09-13 20:21:16 · 477 阅读 · 1 评论