指针 传说npe

文件位置指针

istream 和 ostream 都提供了用于重新定位文件位置指针的成员函数。这些成员函数包括关于 istream 的 seekg("seek get")和关于 ostream 的 seekp("seek put")。 seekg 和 seekp 的参数通常是一个长整型。第二个参数可以用于指定查找 ......
指针 位置 文件

通过IDA分析智能指针源码

首先我们看一看智能指针的内存结构 ### `std::shard_ptr` ```c++ std::shard_ptr{ T * ptr; std::_Ref_count * Rep; } ``` **`ptr`** 对象的指针 **`Rep`** 引用计数对象的指针 ```c++ std::_Re ......
指针 源码 智能 IDA

指针

### 指针 在我的理解中,指针是用来存放地址的。指针也有大小,对于不同类型的指针char,short,int,,,double,它们的指针大小都是8个字节,对于64位机器是这样的,而对于32位机器它们的指针大小都为4个字节。我的是64位操作系统: ``` #include int main() { ......
指针

现代C++(Modern C++)基本用法实践:五、智能指针(Smart Pointers)

# 概述 c++效率较高的一个原因是我们可以自己定制策略手动申请和释放内存,当然,也伴随着开发效率降低和内存泄漏的风险。为了减少手动管理内存带来的困扰,c++提出了智能指针,可以帮助我们进行内存管理,有三种: 1. `std::unique_ptr` 是一种独占所有权的智能指针,它不允许多个指针指向 ......
指针 Pointers 智能 Modern Smart

双指针和双向搜索

## 双指针 也常叫 $two-pointers$ ,是一种简单又灵活的技巧和思想,单独使用可以轻松解决一些特定问题,和其他算法结合也能发挥多样的用处。 顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是特定位置,在树、图上指向的是节点,通过同向移动,或者相向移动来维护、统计信息。 ### ......
指针 双向

算法小菜鸟成长记录Day01-二分查找和双重指针

# 二分查找和双重指针 今天是代码随想录刷题的第一天,刚开始刷的时候昏昏欲睡,其中用时3h - 主要实现以下几个部分 - 二分查找:其中二分查找中其收获最大部分就在于对左开右闭区间的理解,如果都是闭区间也就是【a,b】,那么在while中的条件就为while(left nums[mid]) { le ......
指针 算法 Day 01

114.你知道数组和指针的区别吗?

# 114.你知道数组和指针的区别吗? 1.数组在内存中是连续存放的,开辟一块连续的内存空间;数组所占存储空间:sizeof(数组名);数组大小:sizeof(数组名)/sizeof(数组元素数据类型); 2.用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的 ......
数组 指针 114

野指针与空指针

# 一、野指针与空指针要注意 ## (1)野指针 > 野指针是一个指向未知(undefine)的 , 不确定地方的指针. > > "未知的,不确定的" , 指向的地方可能存在,可能不存在. > > 可能可以访问,也可能不可以访问. > 对野指针的访问,会有后果? > > > 可能可以访问,可能不可以 ......
指针

数据结构与算法 #18 下跳棋,极富想象力的同向双指针模拟

> ⭐️ **本文已收录到 [AndroidFamily](https://github.com/pengxurui/AndroidFamily),技术和职场问题,请关注公众号 [彭旭锐] 和 [BaguTree Pro] 知识星球提问。** > > 学习数据结构与算法的关键在于掌握问题背后的算法思 ......
跳棋 数据结构 指针 想象力 算法

106.你什么情况用指针当参数,什么时候用引用,为什么?

# 106.你什么情况用指针当参数,什么时候用引用,为什么? ## 1.使用引用参数的主要原因有两个 1.程序员能修改调用函数中的数据对象 2.通过传递引用而不是整个数据–对象,可以提高程序的运行速度 ## 2.一般的原则 1.对于使用引用的值而不做修改的函数: (1)如果数据对象很小,如内置数据类 ......
指针 参数 时候 情况 106

82.函数指针?

# 82.函数指针? 函数指针指向的是函数而非对象。和其他指针一样,函数指针指向某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如: ```C++ //比较两个string对象的长度 bool lengthCompare(const string&, const strin ......
指针 函数 82

74.指针加减计算要注意什么?

# 74.指针加减计算要注意什么? 指针加减本质是对其所指地址的移动,移动的步长跟指针的类型是有关系的,因此在涉及到指针加减运算需要十分小心,加多或者减多都会导致指针指向一块未知的内存地址,如果再进行操作就会很危险。 举个例子: ```C++ #include using namespace std ......
指针 74

80.继承机制中对象之间如何转换?指针和引用之间如何转换?

# 80.继承机制中对象之间如何转换?指针和引用之间如何转换? ## 1.向上类型转换 将派生类指针或引用转换为基类的指针或引用被称为向上类型转换,向上类型转换会自动进行,而且向上类型转换是安全的。 ## 2.向下类型转换 将基类指针或引用转换为派生类指针或引用被称为向下类型转换,向下类型转换不会自 ......
之间 指针 机制 对象 80

77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗?

# 77.C++中的指针参数传递和引用参数传递有什么区别?底层原理你知道吗? 1.指针参数传递本质上是值传递,它所传递的是一个地址值。 值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。 值传递的特点是 ......
参数 指针 底层 原理 77

双指针

相反方向 两数之和 II - 输入有序数组给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= in ......
指针

指针

# 指针———c语言的灵魂 ## 1.交换两个变量的值 ```c #include void swap(int *pa,int *pb){ int t=*pa; *pa=*pb; *pb=t; } int main(){ int a=5; int b=6; swap(&a,&b); printf(" ......
指针

isa指针里面都存了什么

在ARM 32 位的时候,isa 的类型是 Class 类型的,直接存储着实例对象或者类对象的地址;在ARM 64 结构下,isa 的类型变成了共用体(union),使用了位域去存储更多信息。 ......
指针 isa

双指针思想

介绍 双指针是一种思想,一种技巧或一种方法,并不是什么特别具体的算法,在二分查找等算法中经常用到这个技巧。具体就是用两个变量动态存储两个或多个结点,来方便我们进行一些操作。通常用在线性的数据结构中,比如链表和数组,有时候也会用在图算法中。 在我们遇到像数组,链表这类数据结构的算法题目的时候,应该要想 ......
指针 思想

【《C++ Primer 第四版》读书笔记】4.2.5-指针和const限定符

####1.指向const对象的指针 #####1.1 表现形式 ```c const double *ptr,const void *ptr ``` #####1.2 如何理解 无法通过ptr这个指针变量去修改所指向内存区域的值,但是ptr这种指针变量可以重复赋值,指向不同的内存地址 注意ptr这 ......
指针 笔记 Primer const

rust 自动化测试、迭代器与闭包、智能指针、无畏并发

编写测试可以让我们的代码在后续迭代过程中不出现功能性缺陷问题;理解迭代器、闭包的函数式编程特性;`Box ......
闭包 指针 智能 rust

abc309f <线段树 + 离散化 + 双指针>

[F - Box in Box](https://atcoder.jp/contests/abc309/tasks/abc309_f) ``` // https://atcoder.jp/contests/abc309/tasks/abc309_f // [unique + lower_bound ......
线段 指针 309f abc 309

移除数组中的元素返回新数组的长度,双指针实现

/** * 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 * * 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 * * 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 * * 示例 ......
数组 指针 长度 元素

C++内存模型&空指针、野指针、函数指针和回调函数

C++内存模型&空指针、野指针、函数指针和回调函数 C++内存模型 栈与堆的区别: 1.管理方式不同 栈是系统自动管理的,在超出作用域后,将自动被释放 堆是手动释放,若程序中不释放,程序结束后将由操作系统回收 2.空间大小不同 堆的大小受限于物理内存范围 栈小的可怜,一般为8M(可通过更改系统配置来 ......
指针 函数 模型 内存 amp

【ChernoC++笔记】指针和引用

指针 【16】C++指针 ▶️指针的类型不影响指针的本质: 任何type的指针都是保存着内存地址的整数(integer)。 指针的type只用来使人更好理解。 // 一个最简单的void类型指针,储存内存地址0 void* ptr = 0; void* ptr = NULL; void* ptr = ......
指针 ChernoC 笔记

结构体,指针函数和数组初始化

struct _m_malloc_dev { void(*init)(uint8_t);//初始化函数 uint8_t (*perused)(uint8_t);//内存使用率 uint8_t *membase[SRAMBANK];//内存池管理 srambank个区域的内存 uint16_t *me ......
数组 指针 函数 结构

c语言结构体指针初始化

结构体定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。 结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 结构体中的数据成员可以是基本数据类型(如 int、float、char 等),也可以是其他结构体类型、指针类型等。 ......
指针 语言 结构

函数指针

#include <stdio.h> int add(int a,int b){ return a+b;} int main(){ int (*p)(int,int)=add; //函数指针的运用 int z=0; z=(*p)(2,77); printf("%d",z); return 0;} 得 ......
指针 函数

指针遍历二维数组

#include <stdio.h> int main(){ int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int (*p)[3]=arr; int i=0; for(i=0;i<3;i++){ int j=0; for(j=0;j<3;j++){ printf( ......
数组 指针

44.指针和const的用法

# 44.C++中的const 编写程序过程中,我们有时不希望改变某个变量的值。此时就可以使用关键字 **const** 对变量的类型加以限定。 ***初始化和const*** 因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化。一如既往,初始值可以是任意复杂的表达式: `` ......
指针 const 44

46.值传递、指针传递、引用传递的区别和效率

## 46.值传递、指针传递、引用传递的区别和效率 1.值传递:有一个实参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。(传值) 2.指针传递:同样有一个实参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节(32位操作系统)的地址。(传 ......
指针 效率 46