指针209

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(必须有具体实体) - 指针声明和定义可以分开,可以先只声明指针变量而不初始化,等用到时再指向具 ......
指针

4.在传递函数参数时,什么时候该使用指针,什么时候该使用引用呢?

●需要返回函数内局部变量的内存的时候用指针。使用指针传参需要开辟内存,用完要记得释放指针,不然会内存泄漏。而返回局部变量的引用是没有意义的 ``` 如果需要返回函数内局部变量的内存,应该使用指针而不是引用。 原因如下: 1.因为引用是对已经存在的变量进行别名,而不是新建一个变量。当函数返回时,函数内 ......
时候 指针 函数 参数

C语言指针相关学习

# C语言指针相关学习 ## 一、指针书写规范 * 任何类型不建议写成 **类型 *变量** ;建议写成**类型* 变量**. * 任何数据类型后面都可以加上*. 举例: 1. 建议写成int* x,不建议写成int *x. 2. 写成Struct* x,而不是Struct *x. ```c #in ......
指针 语言

python中文件读取read、指针位置tell、移动指针seek函数

001、文件对象read读入文件 >>> in_file = open("a.txt", "r") >>> in_file.read() ## 'abcd\nefgh\ni\n' 002、文件对象tell 返回指针再文件中的位置 >>> in_file = open("a.txt", "r") ## ......
指针 函数 位置 文件 python

指针模板

###### 下文所提到的函数的用法: birnary_search: 查找某个元素是否出现,return值为bool binary_search(beg,end,val)查找val,找到为1,否则为0; lower_bound:查找第一个>=某个元素的位置 lower_bound(beg,end, ......
指针 模板