【[modern c++] 智能指针unique_ptr】教程文章相关的互联网学习教程文章

C++的指针常量和常量指针

这2个概念非常容易混淆,即使是老鸟,也有眩晕的时候,写此博文,加深记忆... 指针常量:一个指针,并且它是一个常量,它的值不许被改变; char *const p1 = "Hello!"; //必须在定义的时候初始化,因为它是常量 p1 = "NiHao!"; //错误,不允许对常量赋值 常量指针:一个指针,并且它指向对象是一个常量(不许改变),但该指针本身的值可以被改变; const char *p2 = "Hello!"; //可以不初始化 p2 = "NiHao!"; //正确

图解c/c++多级指针与多维数组【代码】【图】

声明:本文转自 chenyang_yao ,欢迎阅读原文。 指针与数组是C/C++编程中非常重要的元素,同时也是较难以理解的。其中,多级指针与“多维”数组更是让很多人云里雾里,其实,只要掌握一定的方法,理解多级指针和“多维”数组完全可以像理解一级指针和一维数组那样简单。 首先,先声明一些常识,如果你对这些常识还不理解,请先去弥补一下基础知识:1、实际上并不存在多维数组,所谓的多维数组本质上是用一维数组模拟的。...

c++ day16 c面向接口编程和c多态&函数指针类型做参数

函数指针基本语法知识梳理 1.如何定义一个函数类型 2.如何定义一个函数指针类型 3.如何定义一个 函数指针指向一个函数的入口地址#include <iostream> using namespace std; //数组类型的基本语法 //定义一个数组类型 //int a[10]; //定义一个指针数组类型//定义一个指向数组类型的指针 数组指针void main01(){int a[10];//a代表的数组首元素的地址 &a代表整个数组的地址//a+1 4和&a+1 40步长不一样//定义一个数组类型{typedef in...

【C++ 回顾】 C++ 中指针和引用的区别?

1.指针有自己的一块空间,而引用只是一个别名; 2.使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小; 3.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象 的引用; 4.作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引 用的修改都会改变引用所指向的对象; 5.可以有const指针,但是没有const引用; 6.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能 被改变; 7....

【leetcode 双指针 C++】11. Container With Most Water【代码】【图】

11. Container With Most Waterclass Solution { public:int maxArea(vector<int>& height) {int ans = 0;int left = 0, right = height.size() - 1;while(left < right) {ans = max(ans, min(height[left], height[right]) * (right - left));if(height[left] > height[right]) right--;else left++;}return ans;} };

Leetcode 117. 填充每个节点的下一个右侧节点指针 II 解题思路及C++实现

方法一:层序遍历 解题思路: 和第116题一模一样,其实,用队列queue更简单一些,不用将顺序倒来倒去。通过使用队列的长度信息queue.size(),可以只需要一个队列就能做到层序遍历。/* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* next;Node() {}Node(int _val, Node* _left, Node* _right, Node* _next) {val = _val;left = _left;right = _right;next = _next;} }; */ class Solution {...

C++引用和指针比较 指针常量和常量指针

1.定义一个指针的时候可以不赋初始值,定义一个引用的时候必须有初始值。?int?*x;//不报错 ?int?&y;//报错 ? 2.对于程序员来说指针变量包含两部分一个是指针指向的地址和指针本身自己的地址,所以可以对指针再进行取地址&。 对程序员来说引用变量只能获取它所指向的变量的地址,而无法获取引用变量本身的地址,它本身的地址由编译器进行支配。int a = 5; int *x = &a; int &y =a;std::cout<<x<<std::endl;//x指针指向的地址 std::c...

c++学习之初话 函数指针和函数对象 的因缘【代码】【图】

函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性。 函数对象的本质:()运算符的重载。我们通过一段代码来感受函数指针和函数对象的使用: 1 int AddFunc(int a, int b) 2 { 3 return a + b; 4 } 5 6 class Add7 {8 public:9 const int operator()(const int a,const int b) 10 { 11 return a+b; 12 } 13 }; 14 15 int main() 16 { 17 //函数指针 18 int (*A...

c++笔记 指针常量,常量指针,常指针常量区别【代码】【图】

本文是根据崔毅东,杨谈老师c++程序设计(面向对象进阶)课程3.05记录的读书笔记指针两个属性 指针本身具有两个属性,即指针变量本身和指针变量所指向数据。 指针和被指数据都可以有变量或者常量两种状态指针常量 常量指针 常指针常量的定义常指针常量即为常量指针常量,顾名思义具有常量指针和指针常量二者的特性 示例:上左:普通指针 上右:常量指针 下左:指针常量 下右:常指针常量 #include<iostream>using std::cout; using...

C/C++中利用空指针简化代码,提高效率

这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销!#include <iostream> #include <string> using namespace std; void print_char(char* array[]);//函数原形声明 void main(void) { char* test[]={"abc","cde","fgh",NULL};//这里添加一个NULL,表示不指向任何地址,值为0 print_char(test); cin.get(); } void print_char(char* array[]) { ...

C++ 中引用与指针的区别实例详解

C++ 中引用与指针的区别实例详解 引用是从C++才引入的,在C中不存在。为了搞清楚引用的概念,得先搞明白变量的定义及引用与变量的区别,变量的要素一共有两个:名称与空间。 引用不是变量,它仅仅是变量的别名,没有自己独立的空间,它只符合变量的“名称”这个要素,而“空间”这个要素并不满足。换句话说,引用需要与它所引用的变量共享同一个内存空间,对引用所做的改变实际上是对所引用的变量做出修改。并且引用在定义的...

c++ (函数指针适配器)【代码】

函数指针适配器取反适配器void printFunTwo(int val,int start) {cout << val << endl;cout << start << endl; } //函数指针适配器 void test03() {vector<int> v;for (int i = 0; i < 10; i++)v.push_back(i);//将函数指针 适配为 函数对象//ptr_funfor_each(v.begin(), v.end(), bind2nd(ptr_fun(printFunTwo),100)); }

2-2 LC138 复制带随机指针的链表 字节校园每日一题 力扣C++ Java力扣刷题笔记【代码】【图】

第二天 又是被字节校园每日一题香到的一天呢! 文章目录 LC138 复制带随机指针的链表1.读题2.解题思路3.x代码逻辑x4.Java代码 *【字节校园每日一题】LC350 两个数组的交集II1.读题2.解题思路3.代码逻辑4.Java代码LC138 复制带随机指针的链表 我的刷题笔记 复制带随机指针的链表 1.读题 给你一个长度为n的链表 每个节点包含一个额外增加的随机指针random 这个指针可以指向链表中的任何节点或空节点 构造这个链表的深拷贝深拷贝应该正...

【c++基础】004 - 指针和引用的区别是什么?-转载

参考 1. 004 - 指针和引用的区别是什么? 完

C++ 之 智能指针, 共享指针,独占指针,弱指针【代码】

这篇博文对智能指针总结的很到位,感谢Neohope: (Neohope's Blog) http://www.neohope.org/2018/08/15/%E6%B5%85%E8%B0%88cpp%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88/ 智能指针其实并不是指针,而是一个特殊对象。使用时需要包含头文件 #include<memory>在智能指针对象生命期即将结束时,它会调用析构函数释放有它管理的堆内存。访问智能指针管理对象的方法,使用操作符“->”(重载)。访问智能指针本来的方法,使用操作符“....