【探讨c/c++的指针】教程文章相关的互联网学习教程文章

C++ STL 四种智能指针【代码】【图】

文章目录 0.前言1.unique_ptr2.auto_ptr3.shared_ptr 3.1 shared_ptr 简介3.2 通过辅助类模拟实现 shared_ptr4.weak_ptr 4.1 weak_ptr 简介4.2 weak_ptr 用法4.3 weak_ptr 的作用5.如何选择智能指针参考文献 0.前言 C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 ...

C++智能指针

概述 shared_ptr和weak_ptr是从C++11标准库Boost中引入的两种智能指针目前在实际应用最为广泛。此外。Boost库还提出了boost::scoped_ptr、boost::scoped_array、boost::instrusive_ptr等智能指针,虽然尚未得到C++标准采纳,但是在开发实践中可以使用。 shared_ptrshared_ptr对象除了包括一个所拥有对象的指针外,还必须包括一个引用计数代理对象的指针。 时间上的开销主要在初始化和拷贝操作上,*和->操作符重载的开销跟auto_ptr...

c++17(27)-函数指针,函数数组指针【代码】

c1 func2 func3 22 28 Hit any key to continue...#include <iostream> #include <string.h> using namespace std;void func1(){cout<<"func1"<<endl; } void func2(){cout<<"func2"<<endl; } void func3(){cout<<"func3"<<endl; } int func4(int x){cout<<x<<endl;return x+6; }int main(int argc, char **argv) {void (*f1)(){func1};(*f1)();//?????°???é’?void (*f[])(){func2,func3};//?????°??°??????é’?(*f[0])();(*f[1])...

c++题目之指针初探【代码】【图】

1.输入3个整数,按由小到大的顺序输出。(要求使用指针) #include <iostream> using namespace std; void swap(int *p1,int *p2);int main() { int n1,n2,n3;int *p1,*p2,*p3;cout << "输入三个数:" ;cin >> n1 >> n2 >> n3; p1=&n1;p2=&n2;p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3)swap(p1,p3);if(n2>n3) swap(p2,p3);cout << "结果是:" << n1 << n2 << n3 << endl; return 0;}void swap(int *p1,int *p2) {int p;p=*p1; *p1=*p2...

C++this指针,构造函数,析构函数,拷贝构造函数【代码】【图】

1.结构体内存对齐规则: 将默认的对齐数和当前数据类型所占字节进行对比,找最小的作为有效对齐数。 VS默认对齐数为8个字节 面试题: (1).为什么要进行内存对齐? 主要原因是提高效率,次要原因是有些硬件如果不进行内存对齐就会出错。 (2)如何知道结构体某个成员相对于起始位置的偏移量? 方法1:取地址相减,但要转换为char*, 示例:(char*)&Student._name-(char*)&Student (3)怎样判断存储方式是大端还是小端? 大端:低地址...

175-C++学习第十五弹(共享型,弱智能指针)【代码】【图】

继续讲解shared_ptr智能指针左右两部分的区别在哪里? 右部分的移动赋值需要把objb的资源释放,左部分是普通赋值,则是objc和objb共享objb的资源。右部分obja移动构造objb,obja的资源会释放掉,而左部分obja拷贝构造objb,两者共享obja的资源。 左部分构造完obja,objb,objc的代码图解如下: 执行objc=objb;后如下 这3个智能指针指向同一个对象,引用计数为3 当 return 0;主函数要结束,按照先进后出的原则,先析构objc对象,引用...

【c++】C++对象模型和this指针【代码】【图】

1、成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 (1)空对象的大小 #include <iostream> using namespace std;class Person { };void test01() {Person p1;cout << "空对象的大小是:" << sizeof(p1) << endl; }int main(void) {test01();system("pause");return 0; }空对象占用内存空间为: 1 ;C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存...

C++ 字符、字符串、字符数组、字符串指针、指针数组【代码】

一、字符指针、字符数组 字符指针 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以 \0 作为串的结束。 char *ps="C Language"; 顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针; char *ps; // ps 字符串指针,是指针,是一个变量 ps="C Language"; // ps 为字符串的首地址,利用 ps++ 可遍历字符串,字符串存储在以 p...

【LeetCode】C++ :中等题 - 链表 138. 复制带随机指针的链表【代码】【图】

138. 复制带随机指针的链表 难度中等478 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示: val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。 示例 1:输入:head =...

C++ 指针详讲、及指针与数组【代码】【图】

在介绍指针概念之前,需要了解在计算机程序存储数据时必须跟踪的三基本属性:信息存储在何处,也就是地址; 存储的值为多少,简称值; 存储的信息是什么类型,简称类型;1,地址运算符& 在常规变量定义时,寻找变量的 值 和 类型 很方便,如果想知道存储变量的 地址(也就是内存区),这时就需要用到地址运算符 & int main() {int a = 3;int b = 4;cout << "变量 a 的地址为 " << (&a) << endl;cout << "变量 b 的地址为 " << (&b) <...

第四周:C++指针和Java快速上手【代码】【图】

第四周:内存和指针和Java快速上手 CSDN学习小组--第四周内存和指针内存划分指针 Java快速上手Java语言特性:Java三个体系注释和命名数据类型分类:基本数据类型4种访问权限:类和对象File类TCP编程CSDN学习小组–第四周 内存和指针 内存划分 内存是一段连续的地址空间用于CPU进行快速访问的物理存储器件,但每个内存地址的大小由机器字长指定,一个32位操作系统最多只能处理32位地址,所以可管理的空间大小为2322^{32}232B,可换算...

c++中的const修饰指针【代码】

const修饰指针是我们学习c++ 的过程中必须要经历的事情,总是把我们整的晕头转向,可能也是我自身能力不行,大佬应该没有这种感觉,言归正传,开始解剖指针。 一.const修饰指针--常量指针 例:int a = 10; int b = 20; const int * p = &a; //常量指针 特点:指针的指向可以修改,但是指针指向的值不可以修改,稍微解释一下,const后面接的是* 说明*p是不能修改的,*p是不是我们所说的指针指向的值,但是...

C++11中智能指针的原理、使用、实现【代码】

目录理解智能指针的原理 智能指针的使用 智能指针的设计和实现1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存...

C++ this指针详解【代码】

C++ this指针详解 this 是 C++ 中的一个关键字,也是一个 const 指针,它指向当前对象,通过它可以访问当前对象的所有成员。 所谓当前对象,是指正在使用的对象。例如对于stu.show();,stu 就是当前对象,this 就指向 stu。 下面是使用 this 的一个完整示例: #include <iostream> using namespace std; class Student{ public:void setname(char *name);void setage(int age);void setscore(float score);void show(); private:ch...

C++智能指针【代码】

前言 C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique_ptr 替代 auto_ptr。虽然 auto_ptr 已被摒弃,但在实际项目中仍可使用,但建议使用更加安全的 unique_ptr,后文会详细叙述。shared_ptr 和 weak_ptr 则是 C+11 从准标准库 Boost 中引入的两种智能指针。此外,Boost 库还提...