指针知识啦

C语言/C++指针知识点总结详解 C++指针1、什么是指针2、指针定义和赋值3、引用指针变量4、指针作函数参数5、字符串与指针6、函数与指针7、指向指针的指针8、const指针相关【难点】9、void类型指针10、有关指针数据类型的小结 1、什么是指针 如果把某一块已经开辟的内存空间比作房间,那么指针就是一把钥匙。房间有大有小,而钥匙就那么大,所以指针所占用的字节为4字节。这把钥匙可以根据你的设定来让它开哪个房间,但是,最多只能开... 阅读详情

今天给大家分享一些关于指针的知识~

一. 指针是什么?

指针理解的2个要点:
1. 指针是内存中一个最小单元的编号,也就是地址
2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
总结:指针就是地址,口语中说的指针通常指的是指针变量。
指针变量
我们可以通过&(取地址操作符)取出变量的内存其实是地址,把地址可以存放到一个变量中,这个 变量就是指针变量。
例如:
#include <stdio.h>
int main()
{
 int a = 10;//在内存中开辟一块空间
 int *p = &a;//这里我们对变量a,取出它的地址,可以使用&操作符。
    //a变量占用4个字节的空间,这里是将a的4个字节的第一个字节的地址存放在p变量
中,p就是一个之指针变量。
 return 0;
}
总结:
指针变量,是用来存放地址的变量。(存放在指针中的值都被当成地址处理)
指针的大小
在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以
一个指针变量的大小就应该是4个字节。
那如果在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地
址。
总结:
指针是用来存放地址的,地址是唯一标示一块地址空间的。
指针的大小在32位平台是4个字节,在64位平台是8个字节。

二. 指针类型

变量有不同的类型,整形,浮点型等。指针也如此。
将&num(num的地址)保存到p中,我们知道p就是一个指针变量
而它可以表示为  type + * 
例如:
char  *pc = NULL;
int   *pi = NULL;
short *ps = NULL;
long  *pl = NULL;
float *pf = NULL;
double *pd = NULL;
咱们可以看到:
char* 类型的指针是为了存放 char 类型变量的地址。
short* 类型的指针是为了存放 short 类型变量的地址。
int* 类型的指针是为了存放 int 类型变量的地址。
其他亦如此。
指针的解引用
//演示实例
#include <stdio.h>
int main()
{
 int n = 0x11223344;
 char *pc = (char *)&n;
 int *pi = &n;
 *pc = 0;   //重点在调试的过程中观察内存的变化。
 *pi = 0;   //重点在调试的过程中观察内存的变化。
 return 0;
}

总结:

指针的类型决定指针访问内存的能力,对指针解引用的时候有多大的权限(能操作几个字节)。
比如: char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。

三:野指针

概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)
野指针成因
1. 指针未初始化
#include <stdio.h>
int main()
{ 
 int *p;//局部变量指针未初始化,默认为随机值
    *p = 20;
 return 0;
}
2. 指针越界访问
#include <stdio.h>
int main()
{
    int arr[10] = {0};
    int *p = arr;
    int i = 0;
    for(i=0; i<=11; i++)
   {
        //当指针指向的范围超出数组arr的范围时,p就是野指针
        *(p++) = i;
   }
    return 0;
3. 指针指向的空间释放
在C语言中,使用指针指向的空间通常涉及到动态内存分配。当你使用 malloc、calloc 或 realloc 函数分配了一块内存后,你需要负责在适当的时候释放这块内存,以避免内存泄漏。释放内存使用的是 free 函数
如何规避野指针
1. 指针初始化
2. 小心指针越界
3. 指针指向空间释放即使置NULL
4. 避免返回局部变量的地址
5. 指针使用之前检查有效性

四:指针运算

指针+-整数
#define N_VALUES 5
float values[N_VALUES];
float *vp;
//指针+-整数;指针的关系运算
for (vp = &values[0]; vp < &values[N_VALUES];)
{
     *vp++ = 0;
}
指针-指针
int my_strlen(char *s)
{
       char *p = s;
       while(*p != '\0' )
              p++;
       return p-s;
}
指针的关系运算
标准规定:
允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与
指向第一个元素之前的那个内存位置的指针进行比较。

五:二级指针

指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?
答案是 二级指针 。
二级指针的运算
*ppa 通过对ppa中的地址进行解引用,这样找到的是 pa , *ppa 其实访问的就是 pa .
int b = 20;
*ppa = &b;//等价于 pa = &b;

**ppa 先通过 *ppa 找到 pa ,然后对 pa 进行解引用操作: *pa ,那找到的是 a .
**ppa = 30;
//等价于*pa = 30;
//等价于a = 30;

以上就是一些关于指针知识的分享啦,在编程中指针的作用还是挺大的,知识量也挺多,所以小伙伴们还是得多花点时间去学会使用指针@
手把手教你用VM实现欧姆龙PLC数据采集(含Fins协议配置详解) 本文详细介绍了如何使用VM(VisionMaster)实现与欧姆龙PLC的数据采集,重点解析了Fins协议(包括Fins TCP/UDP)的配置步骤。从网络环境搭建、PLC的IP地址设置,到VM端Fins通讯通道的详细配置与数据点映射,提供了完整的实战指南。文章还涵盖了数据收发解析、常见问题排查清单,帮助工程师快速完成视觉系统与PLC的稳定集成。 阅读详情

相关推荐

DETRs with Collaborative Hybrid Assignments Training论文阅读与代码

在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习,反之亦然,也会影响解码器中的注意力学习。为了缓解这个问题,作者提出了一种新颖的协同混合分配训练方案,名为Co-DETR,以从多样的标签分配方式中学习更高效、更有效的基于DETR的检测器。这种新的训练方案可以通过训练多个并行辅助 Head ,以一对多的标签分配方式(如ATSS和Faster RCNN)进行监督,轻松增强端到端检测器中编码器的学习能力。

qingjing0413的博客 1156

指针知识详解

指针变量的大小取决于地址的大小例:指针与指针比大小函数调用完,就销毁栈传值调用:传址调用:、计算器的实现代码1(sizeof):字符数组:字符串数组:常量字符串:代码2(strlen):字符数组:字符串数组:常量字符串:

l_so_good_的博客 1480

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1264

C语言指针知识点大全

数组指针是指针?还是数组?答案是:指针。我们已经熟悉: 整形指针: int * pint;能够指向整形数据的指针。浮点型指针: float * pf;能够指向浮点型数据的指针。那数组指针应该是:能够指向数组的指针。下面代码哪个是数组指针?//p1, p2分别是什么?解释://解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。//所以p是一个指针,指向一个数组,叫数组指针。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。OK!

2302_78964455的博客 3380

MATLAB新手必看:SVPWM七段式算法仿真全流程解析(附完整代码)

本文为MATLAB新手和电机控制初学者提供了SVPWM七段式算法的完整仿真与代码实现指南。文章详细解析了从扇区判断、矢量作用时间计算到PWM波形生成的全流程,并附带了可直接运行的MATLAB代码,帮助读者在理解FOC控制核心算法的基础上,快速掌握工程仿真与调试技巧。

weixin_29074295的博客 283

从零开始:用YOLOv8-Pose实现实时人体姿态检测(附完整代码)

本文提供了一份从零开始的完整实战指南,详细介绍了如何使用YOLOv8-Pose构建实时人体姿态检测系统。内容涵盖环境搭建、数据准备、模型训练与调优,以及高性能部署和进阶应用开发,并附有可直接运行的代码示例,帮助开发者快速掌握Pose Estimation技术并将其应用于实际项目。

h6i7j8的博客 622

指针知识点详解

指针也就是内存地址,指针变量是用来存放内存地址的变量,在同一CPU构架下,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。有了指针以后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。我们知道一级指针变量里存放的是某个变量的地址,而二级指针变量里存放的就是这个一级指针的地址。return 0;其中pp就是二级指针变量。

2401_86509286的博客 1297

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

指针太难了?C语言指针知识梳理

对C语言指针知识的梳理,了解了基础的知识框架学起来就不吃力了

2502_91433987的博客 1602

《无线传感网络 matlab》:从入门到实践

这就是如何使用Matlab建立一个简单的无线传感网络并进行仿真的方法。当然,这只是一个入门级的示例,真正的无线传感网络可能会更加复杂和庞大。首先,我们需要创建一个无线传感网络的基础结构。接下来,我们需要定义一个数据包的格式,以便节点之间可以交换信息。无线传感网络是一种由无线传感器节点组成的、自组织的网络。现在,我们可以开始编写节点代码了。我们将使用Matlab提供的工具箱来构建一个简单的无线传感网络,并对其进行仿真和分析。现在,我们可以将这个节点复制9次,以创建一个包含10个节点的无线传感网络。

NoerrorCode的博客 297

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

指针知识总结

类型关键字 *指针变量名例如:int *p;这就代表着我们定义了一个名为‘p’的指针变量了。其中类型关键字就是我们指针变量要指向的那个变量的数据类型,例如常见的int,double,char等等。定义多个指针变量:但此时的指针并没有指向一个地址,指针变量的值是一个随机数,因此还需要初始化。

wojiejiedanio的博客 1836

使用mid360运行lio-livox对比fast-lio2

msg_type为激光雷达发出的数据格式,有livox自定义数据类型格式CustomMsg和ros标准的PointCloud2格式,因此首先需要确定激光雷达端配置的是哪种格式。可以从激光雷达的ros驱动中看到驱动端有三种格式可以选,驱动端的数字2对应lio-livox中的1,驱动端的0对应lio-livox的格式0。如果使用的是Ubuntu18.04编译完成后运行直接成功,如果使用20.04运行会报错,需要修改以下源代码。针对livox-mid360 运行lio-livox的一些问题。

z1872385的博客 1231

指针学习知识

本文系统介绍了C语言中指针的核心概念与应用,主要内容包括:内存和地址的基本概念、指针变量的声明与使用、指针运算规则、const修饰指针的用法、野指针的成因与防范、指针在函数传参和数组访问中的应用、多级指针及特殊指针类型(如void*、字符指针、数组指针、函数指针等)。文章通过大量代码示例详细讲解了指针操作、指针与数组/函数的关系、指针的类型意义等知识点,并分析了指针使用中的常见错误和注意事项。最后总结了指针在C语言程序设计中的重要性,为读者提供了全面的指针知识体系。

2401_86982201的博客 1002

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

指针 知识大全

指针的全面基础知识讲解

qq_57503964的博客 1307

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C语言指针知识点小结

前期回顾   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过指针引用数组   C语言指针基础知识点(五)–用数组名作函数参数   C语言指针基础知识点(六)–通过指针引用多维数组   C语言指针基础知识点(七)–通过指针引用字符串   C语言指针基础知识点(八...

zhf的博客 1万+

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

指针知识点记录

今天来记录下C中指针的一些知识点,基本忘光了。 C#:为什么,明明是我先 指针变量大小:32位下是4个字节(64位下是8个字节),所有类型指针变量都一样 指针取值&n级指针乱七八糟:*p,说白了其实就是, &p:指针本身所在内存地址, p:指针的值,一般给他赋值一个其他变量的内存地址, *p:取指针的值当作内存地址去寻那个地址下的值。 野指针:主要是因为这些疏忽而出现的删除或申请访...

hansLin_918的博客 478

C语言指针基础知识点(一)--指针及指针变量

指针基础点 1.一个变量的地址称为该变量的指针 例如,地址2000是变量 i 的指针 2.一个变量专门用来存放另一变量的地址(即指针),则它称为指针变量 指针变量的值是地址 正确区分:    例如,可以说变量 i 的指针是2000,而不能说 i 的指针变量是2000.指针是一个地址,而指针变量是存放地址的变量。 入门第一栗: 通过指针变量访问整型变量 # inclu...

zhf的博客 1万+

指针相关知识点总结

可以把内存单元划分为一个个小小的内存单元,每个内存单元的大小取一个字节。

2402_84516899的博客 866

【C语言】指针篇——你必须要掌握的指针基础知识

文章目录前言一、指针概述指针的创建指针的大小如何使用指针二级指针二、野指针形成野指针的原因如何规避野指针三、指针的基本运算指针+- 整数指针-指针四、指针和数组五、指针数组总结 前言 指针是C语言的重点和难点,熟练的掌握指针能够更好的理解计算的存储方式,同时简化代码,增强程序的效率。 一、指针概述 指针是个变量,存放内存单元的地址(编号)。 指针的创建 在定义指针变量的时候,在变量前面加上’ * ',代表这个变量是一个指针,再往前面加上一个类型名,就代表指针的类型,称为XX指针。 指针的初始化:

qq_52145272的博客 1406

由指针秒用引出的指针知识

(Pass by Value),即函数内部修改参数不会影响外部变量。这是 C 语言最强大的特性之一。在大多数表达式中会自动退化为。,从而能进行智能的加减运算。(指针),我们需要一种方式去。这段代码虽然短小,但它是一个。

2501_94039766的博客 366

《深入解析指针相关知识》

int arr[5];这是最基础的整型数组定义,表示定义了一个包含 5 个整型元素的数组,在内存中会连续分配相应的空间来存储这些整型数据。属于整型指针数组,它创建了一个能存放 10 个整型指针的数组,可用于管理多个不同的整型数据地址,方便对多个整型变量或者整型数组元素等进行间接访问和操作。是数组指针,其作用是指向一个大小为 10 个整型元素的数组,在涉及对特定大小整型数组的操作以及传递数组地址等场景中有着重要用途,能让我们更精准地操控数组相关的内存区域。

a12sj_的博客 827

指针基础知识

指针基础知识 文章目录指针基础知识指针与引用的区别符号的多重含义空指针与野指针指针赋值指针的复合类型复合类型的声明指向指针的指针 C++中的指针是一大难点,开这篇文章整理一下乱掉的脑子。 本文主要参考《C++ Primer》 指针与引用的区别 指针与引用一样,都是对其他对象的间接访问,但区别就在于: 指针就是一个对象,可以先后指向不同的对象 引用并非对象,它只是所引用对象的一个别名,一旦定义给某个对象定义引用,则该引用不能更换给别的对象 符号的多重含义 对于指针的声明和使用过程中,有两个符号* &a

日月既往,不可复追 438

C语言指针知识点

地址与指针 每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。 请看下面的实例,它将输出定义的变量地址: #include <stdio.h> int main () { int var1; char var2[10]; printf("var1 变量的地址: %p\n", &amp...

weixin_44161383的博客 1万+

C语言基础指针知识点总结

C语言指针知识点总结,入门级指针,全面总结,这一篇足够了

qq_43591406的博客 1万+

C语言指针相关知识梳理

随着c语言学习的不断深入,指针的应用也更加的频繁,温故而知新,希望通过简单的知识梳理能够帮助大家更好的理解和把握指针。语法格式:① 声明基类型* 指针变量名;② 初始化基类型* 指针变量名 = &值;③ 赋值指针变量名 = &值;文章大致讲述了语言指针相关的知识和一些具体应用的介绍,有不足之处望诸位看官多多包含。

maydayisyouandme的博客 1845
上一篇: 操作符详解
下一篇: 今天你也很棒呢
知困勉行的Allen
博客等级 码龄3年 279粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值