![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
指针
文章平均质量分 72
luckyone906
这个作者很懒,什么都没留下…
展开
-
汇编基础知识-寄存器
IP是专用寄存器,具有自动增量的能力,处理完一条指令,IP的值就加上该指令的字节数,从而指向下一条指令,实现程序的顺序执行。CF(进位标志)、PF(奇偶标志)、AF(调整标志)、ZF(零标志)、SF(符号标志)、OF(溢出标志)(4)没有合适的高级语言或只能采用汇编语言时,如开发最新的处理器程序、暂时没有支持新指令的编译程序。(2)执行:将指令代码翻译成它代表的功能(译码),并发出有关控制信号实现这个功能。(1)原码——最高有效位表示符号(正0负1),其它位直接表示数值大小。bp寄存器默认是SS。原创 2024-06-01 22:26:59 · 1006 阅读 · 0 评论 -
C语言指针是什么?彻底理解C语言指针的概念
当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。( )表示取值操作,整个表达式的意思是,取出地址 0X1000 和 0X2000 上的值,将它们相加,把相加的结果赋值给地址为 0X3000 的内存。原创 2024-05-01 20:45:11 · 351 阅读 · 0 评论 -
C语言指针变量的定义和使用详解(精华)
上节我们说过,CPU 读写数据必须要知道数据在内存中的地址,普通变量和指针变量都是地址的助记符,虽然通过 *p 和 a 获取到的数据一样,但它们的运行过程稍有不同:a 只需要一次运算就能够取得数据,而 *p 要经过两次运算,多了一层“间接”。值得注意的是,p_a 需要的一个地址,a 前面必须要加取地址符&,否则是不对的。*&a可以理解为*(&a),&a表示取变量 a 的地址(等价于 pa),*(&a)表示取这个地址上的数据(等价于 *pa),绕来绕去,又回到了原点,*&a仍然等价于 a。原创 2024-05-01 20:43:43 · 49 阅读 · 0 评论 -
C语言指针数组详解(数组每个元素都是指针)
parr 是指向数组 arr 的指针,确切地说是指向 arr 第 0 个元素的指针,它的定义形式应该理解为int *(*parr),括号中的*表示 parr 是一个指针,括号外面的int *表示 parr 指向的数据的类型。第二个 printf() 语句中,parr+i 表示第 i 个元素的地址,*(parr+i) 表示获取第 i 个元素的值(该元素是一个指针),**(parr+i) 表示获取第 i 个元素指向的数据。为了便于理解,可以将上面的字符串数组改成下面的形式,它们都是等价的。原创 2024-05-01 20:42:08 · 280 阅读 · 0 评论 -
C语言函数指针(指向函数的指针)详解示例演示
一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。参数列表中可以同时给出参数的类型和名称,也可以只给出参数的类型,省略参数的名称,这一点和函数原型非常类似。注意( )的优先级高于*,第一个括号不能省略,如果写作returnType *pointerName(param list);//返回两个数中较大的一个。原创 2024-05-01 20:40:54 · 259 阅读 · 0 评论 -
C语言指针的总结详解(1)
程序在运行过程中需要的是数据和指令的地址,变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符:在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址;5) 数组也是有类型的,数组名的本意是表示一组类型相同的数据。2) 给指针变量赋值时,要将一份数据的地址赋给它,不能直接赋给一个整数,例如int *p = 1000;p 可以指向 int 类型的数据,也可以指向类似 int arr[n] 的数组。定 义 含 义。原创 2024-05-01 20:39:15 · 141 阅读 · 0 评论 -
c++ 中return返回值与内存的分配释放详解
c++原创 2023-01-11 22:16:16 · 4100 阅读 · 0 评论 -
c++中值类型数组和引用数组的区别
c++原创 2022-12-28 22:18:38 · 698 阅读 · 1 评论 -
C++中delete 和 delete []的真正区别
c++原创 2022-12-24 14:35:42 · 4946 阅读 · 1 评论 -
c语言-彻底理解C语言指针的概念
c++原创 2022-12-15 21:29:46 · 412 阅读 · 0 评论 -
C语言二级指针-指向指针的指针详解
c++原创 2022-12-15 21:18:53 · 169 阅读 · 0 评论 -
c++中返回参数为引用时不能是在栈中分配的(必须在堆中创建这样内存是手动释放,而栈中因为函数结束会自动释放栈中的内存)
c++原创 2022-11-25 15:13:09 · 506 阅读 · 0 评论 -
c++中引用、指针、值的区别与用途详解
c++原创 2022-11-25 14:16:27 · 755 阅读 · 0 评论 -
C++中值传递、指针传递和引用传递的比较详解
c++原创 2022-11-25 14:05:38 · 240 阅读 · 0 评论 -
C++中返回引用和返回值的区别详解(1)
c++原创 2022-11-25 14:00:23 · 595 阅读 · 0 评论 -
c++中指针,堆栈内存分配重要概念理解汇总(实例注释)
c++原创 2022-11-20 10:15:10 · 1877 阅读 · 0 评论 -
c++中指针概念及指针变量的大小
c++原创 2022-11-20 09:55:46 · 972 阅读 · 0 评论 -
c++中内存堆栈的创建与回收
c++原创 2022-11-20 09:38:38 · 649 阅读 · 0 评论 -
C++程序内存分配方式概念与区别(堆与栈)
c++原创 2022-11-19 19:45:35 · 330 阅读 · 0 评论 -
C++中函数调用的整个过程内存堆栈分配详解
c++原创 2022-11-18 22:26:37 · 3772 阅读 · 0 评论 -
C++中运行一个程序的内存分配情况及qt中的内存管理机制
c++原创 2022-11-10 18:57:50 · 2151 阅读 · 0 评论 -
C++中HANDLE句柄的概念
c++原创 2022-11-10 18:30:40 · 2098 阅读 · 0 评论 -
C++释放指针时提示Invalid address specified to RtlFreeHeap解决办法(堆栈中分配时多分配一些空间再释放)
c++原创 2022-10-15 16:59:21 · 1854 阅读 · 0 评论 -
qt中其他线程的信号向异步线程的槽传指针与释放指针问题
c++原创 2022-10-15 15:27:56 · 789 阅读 · 1 评论 -
qt中信号槽传指针到工作线程,在工作线程释放传递过来的指针
c++原创 2022-11-11 18:38:42 · 329 阅读 · 0 评论 -
C++中创建二维数组的几种方法
c++原创 2022-09-24 22:16:53 · 3565 阅读 · 0 评论 -
qt C++中指针自动释放内存及程序中的内存操作、管理
c++原创 2022-11-12 09:16:45 · 4695 阅读 · 0 评论 -
C++:delete和delete[]释放内存的区别
c++原创 2022-11-12 09:17:49 · 1448 阅读 · 0 评论 -
C++中对象的动态建立与释放详解
我们知道可以用new运算符可以动态的分配内存,用delete运算符可以释放这些内存。当我们使用new运算符动态的分配一个内存之后,会自动返回一个该内存段的起始地址,也就是指针。=============下面先给出一个new和delete基本应用的例子,回顾一下它的基本用法============复制代码代码如下:#include<iostream>using namespace std;int main(){int *p;//定义一个指向int型变量的指针pp=n..原创 2022-05-15 19:46:36 · 1931 阅读 · 0 评论 -
C++中对象创建与释放
创建对象有以下四种形式:#include <iostream> using namespace std; class A{ private: int i; public: A(){ cout<<"调用没有参数的构造函数"<<endl; } A(int a):i(a){ cout<<"调用有一个参数的构造函数"<<endl; } ~A(){cout<<"成员变量为:"<<i<<"原创 2022-05-15 19:41:22 · 3720 阅读 · 0 评论 -
c#中使用Marshal手动在堆中创建非托管内存并使用
使用 Marshal 做出可以快速释放内存的大数组。需要不断申请一段大内存数组,然后就释放他,但是 C# 对于大内存不是立刻释放,所以就存在一定的性能问题。在博客园看到了一位大神使用 Marshal 做出快速申请的大数组,于是我就学他的方法来弄一个。本文告诉大家这个类是如何使用在使用的时候,先来看下原来的 C# 的大数组性能。可以看到在不停gc,性能不好 static void Main(string[] args) { for (int i = 0; i <转载 2022-02-12 13:23:02 · 1293 阅读 · 0 评论 -
c语言-指针的本质和使用
指针的本质和使用一、地址概念我们首先来看看地址 是个什么概念每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。画图简单说明:二、 什么是指针?指针也就是内存地址,指针变量是用来存放内存地址的变量。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。int a=3;int *pa=&a;画图简单说明:指向一个变量2.1 指针变量声明的一般形式指针类型 *变量名...转载 2022-02-05 21:07:15 · 726 阅读 · 0 评论 -
C语言-动态内存管理
C语言中,我们在使用数组的时候,经常有这样的一个问题:数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。有的时候,我们开辟的空间太小,无法满足我们的需求,有时又太大,浪费空间比较严重。那么能不能按照需求,需要一个就开辟一个空间,需要两个就开辟两个空间? 这时候就只能试试动态内存开辟了。一、malloc 函数和free 函数C语言提供了一个用来动态开辟的函数:malloc函数。头文件是stdlib.h。void* malloc (size_t size);该函数能够在内存中申请转载 2022-02-05 20:55:22 · 107 阅读 · 0 评论 -
C语言-指针
目录 指针是什么? 指针变量 使用指针变量的例子通过指针引用数组&数组名vs数组名野指针野指针成因如何避免野指针指针运算 指针是什么?指针是c语言中的一个重要概念,也是C语言的一个重要的特色,正确而灵活地运用它,可以使程序简洁,紧凑,高效,每一个学习和使用c语言的人,都应当深入了解地学习和掌握指针,可以说,不掌握指针就是没有掌握C的精华也可以说指针是C语言的灵魂(doge)...转载 2022-02-05 20:30:28 · 270 阅读 · 0 评论 -
c语言-指针
目录1、指针是什么?2. 指针和指针类型2.1 指针+-整数2.2 指针的解引用3. 野指针3.1 野指针成因3.2 如何规避野指针4. 指针运算4.1 指针+-整数4.2 指针-指针4.3 指针的关系运算5. 指针和数组6. 二级指针7. 指针数组1、指针是什么?指针是什么?指针理解的2个要点:1. 指针是内存中一个最小单元的编号,也就是地址,即我们常说的指针即地址2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变.转载 2022-01-03 21:37:24 · 102 阅读 · 0 评论 -
C++中的野指针问题
文章目录1 C和C++中的野指针问题1.1 野指针的概念1.2 野指针的由来1.3 杜绝野指针的基本原则2 C和C++中的常见内存错误2.1 常见内存错误2.2 内存操作的基本规则1 C和C++中的野指针问题1.1 野指针的概念野指针的概念:指针变量中的值是非法的内存地址,进而形成野指针。野指针不是NULL指针,是指向不可用内存地址的指针。NULL指针并无危害,很好判断,也很好调试。C语言中无法判断一个指针所保存的地址是否合法。1.2 野指针的由来如下情况可能导致野指针的出原创 2021-12-30 20:41:49 · 4070 阅读 · 1 评论 -
c语言中函数调用的原理及形参传递实质原理分析
一、 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实.转载 2021-11-30 21:54:04 · 2144 阅读 · 0 评论 -
函数形参传递概念及问题分析
普通函数参数下面程序试图改变main函数中a和b的值#include<stdio.h>void fun(int x,int y){ int c; c=a; a=b; b=c;}int main(){ int a=1,b=2; fun(a,b); printf("a=%d b=%d\n",a,b); return 0;}函数参数传递分析:实参: &a 28ff18 ...原创 2021-11-30 21:52:01 · 290 阅读 · 0 评论 -
c++中堆、栈内存分配概念示例讲解
首先来看看主要有几种程序内存分配:一个由C/C++编译程序占用内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量存储是放在一块,初始化全局变量和静态变量在一块区域, 未初始化全局变量和未初始化静态变量在相邻另一原创 2020-12-28 21:33:55 · 3437 阅读 · 0 评论 -
C语言中指针动态内存的申请和释放
什么是动态内存的申请和释放?当程序运行到需要一个动态变量时,需要向系统的堆中申请一块内存,用来存储这块变量,这就是内存的申请。当程序不需要这个变量时,就需要把申请的这块内存释放掉,这就是内存的释放。往往内存的申请和释放是一起使用的,只要有内存的申请,就要有内存的释放,避免出现内存泄漏。C语言指针的申请:(1).在C语言中使用malloc函数申请内存,函数原形:void* malloc(size_t size);参数size代表申请的内存的字节数,参数size_t代表指针的...原创 2020-08-20 21:10:28 · 20103 阅读 · 0 评论