指针constexpr

算法小菜鸟成长记录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

31.野指针和悬空指针

都是是指向无效内存区域(这里的无效指的是"不安全不可控")的指针,访问行为将会导致未定义行为。 ●野指针 “野指针”(wild pointer):是没有被初始化过的指针,所以不确定指针具体指向。因为“野指针”可能指向任意内存段,因此它可能会损坏正常的数据,也有可能引发其他未知错误。在实际的程序开发中 ......
指针 31

26.数组名和指针(这里为指向数组首元素的指针)区别?

- 二者均可通过增减偏移量来访问数组中的元素。 - 数组名不是真正意义上的指针,可以理解为常指针,所以数组名没有自增、自减等操作。 - **当数组名当做形参传递给调用函数后,就失去了原有特性,退化成一般指针,多了自增、自减操作,但sizeof运算符不能再得到原数组的大小了。** ......
数组 指针 指向 元素 26

17.常量指针和指针常量区别?

## 1)常量指针(指向常量的指针) 语法:const 数据类型 *变量名; 不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。 注意: ●指向的变量(对象)可以改变(之前是指向变量a的,后来可以改为指向变量b)。 ●一般用于修饰函数的形参,表示不希望在函数里修改内存地址中的值。 ......
常量 指针 17

7.区别以下指针类型?

```C++ int *p[10] int (*p)[10] int *p(int) int (*p)(int) ``` - int *p[10]表示指针数组,强调数组概念,是一个数组变量,数组大小为10,数组内每个元素都是指向int类型的指针变量。 - int (*p)[10]表示数组指针,强调是 ......
指针 类型

3.指针和引用的区别

- 指针是一个变量,存储的是一个地址,需要占用存储空间;引用本质上是一个常量指针,引用跟原来的变量实质上是同一个东西,是原变量的别名 - 指针可以有多级,引用只有一级 - 指针可以为空,引用不能为NULL(必须有具体实体) - 指针声明和定义可以分开,可以先只声明指针变量而不初始化,等用到时再指向具 ......
指针