当前位置: 首页 > news >正文

初阶指针C

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

🐰指针是什么

🐰指针和指针类型

🌸指针+-整数

🌸指针的解引用

🐰野指针

🌸野指针的成因

🌸如何规避野指针

🐰指针运算

🌸指针+-整数

🌸指针-指针

🌸指针的关系运算

🐰指针和数组

🐰二级指针

🐰指针数组


🐰指针是什么

1.指针是内存中一个最小单元的编号,也就是地址

2.平时口语上所说的指针,通常指的是指针变量,是用来存放地址的变量

3.把内存划分为一个个的内存单元,这个内存单元大小是1字节,从概念上讲:编号 == 地址 == 指针

指针变量:

我们可以通过& (取地址操作符) 取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是指针变量

int main
{int a=10;//a是整形,占用4个字节的内存空间,没个字节都有对应的空间int* pa=&a;//&a  得到的是a的地址(指针),其实得到的是a所占内存中4字节中第一个字节的地址;pa是指针变量
}

‼️注:指针变量是用来存放地址的,存在指针中的值都会被当作地址,(锤子的眼里都是钉子)

🐰指针和指针类型

指针的类型为一个类型名和字符“ * ” 的组合,我们平时说“一个int 类型的指针”,其实是在说“一个类型为 int*的指针”。编译器认为这样的一个指针指向的内存单元为4 字节,并将其内容解释为 int 类型的值。

指针的类型有很多种,但指针类型大小是相同的:

    printf("%lu\n",sizeof(int*));printf("%lu\n",sizeof(char*));printf("%lu\n",sizeof(double*));printf("%lu\n",sizeof(short*));
他们所打印的值都是,都是8

‼️注:不同类型的指针大小相同,x86环境下大小是8,x64环境下大小是4

🌸指针+-整数

#include<stdio.h>
int main()
{int a=10;int* pa=&a;char* pc=&a;printf("%p\n",&a);printf("%p\n",pa+1);printf("%p\n",pc+1);return 0;
}

其运行结果为:

0x7ffeefbff3e8

0x7ffeefbff3ec

0x7ffeefbff3e9

&a:     0x7ffeefbff3e8
pa+1    0x7ffeefbff3ec
ppc+1   0x7ffeefbff3e9
可以看出来pa+1移动了4个内存单元即4个字节,而pc+1移动了1个内存单元即一个字节,因为pa是int类型的指针变量,所以需要移动1*sizeof(int),pc是char类型的指针变量,所以需要移动1*sizeof(char).

总结:指针类型决定了,指针进行+1,-1的时候,一步走多远

🌸指针的解引用

#include<stdio.h>
int main(){
int a=1000,b=1000;;
int* pa=&a;*pa=20;
char* pb=&b;*pb=20;
printf("a=%d b=%d\n",a,b);
}

其运行结果为:

a=20 b=788

大家就会奇怪,明明*pa=20,*pb=20一样,为什么a,b的值不一样呢?分析如下

int a=1000,b=1000;;
int* pa=&a;*pa=20;
char* pb=&b;*pb=20;
因为pa是整形的指针变量,可以访问4个字节的存储空间,刚好a也是整形变量,pa可以访问a中的所有值,而pb是字符型的指针变量,可以访问1个字节的存储空间,而b是整形变量,pb只能访问b中一个字节的内容

总结:指针类型就决定了,在解引用指针的时候能访问几个字节

🐰野指针

🌸野指针的成因

定义:野指针就是指针指向的位置是不可知的(随机的、不准确的、没有明确限制的)

(1)指针未初始化

int*p;未初始化

(2)当指针指向的范围超出数组arr的范围时,p就是野指针

int arr[10]={0};
int* p=arr;
*(p+10)=1;*(p+10)就是arr[10],这已经越界了

(3)指针指向空间释放

就是指针p之前指向的是一个有效的内存空间,现在那个空间被销毁了,这个指针p也就成为了野指针(这就好比张三以前有个女朋友,但是现在分手了,张三就成为了单身汪,因此单身汪是不能联系前女友的

(4)避免返回局部变量的地址

int* fun(int arr[]){int* p=arr;return str
}
int main(){int arr[10]={0};int* parr=fun(arr);这里返回的地址,已经在函数调用完成时销毁了
}

(5)指针的使用之前检查有效性

‼️注:一个指针不知道指向哪里时,暂时可以初始化NULL

🌸如何规避野指针

注意造成野指针的成因,就可以有效避免野指针的形成。

‼️注:一个指针不知道指向哪里时,暂时可以初始化NULL

🐰指针运算

🌸指针+-整数

🌸指针-指针

🌸指针的关系运算

🐰指针和数组

🐰二级指针

🐰指针数组

🐶🐶🐶由于课程问题,有些许内容还没有更新,请各位观众老爷们见谅🐶🐶🐶

 🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸  

相关文章:

初阶指针C

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;指针是什么 &#x1f430;指针和指针类型 &#x1f338;指针-整数 &#x…...

云原生安全2.X 进化论系列|揭秘云原生安全2.X的五大特征

随着云计算技术的蓬勃发展&#xff0c;传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展&#xff0c;成为赋能业务创新的重要推动力&#xff0c;并已经应用到企业核心业务。然而&#xff0c;云原生技…...

json文件在faster_rcnn中从测试到训练 可行性

1.确认任务 经过mydataset文件处理后 - > 在train_res50_fpn文件内应用 # load train data set # VOCdevkit -> VOC2012 -> ImageSets -> Main -> train.txt train_dataset VOCDataSet(VOC_root, "2012", data_transform["train"], &…...

golang 1.20正式发布,更好更易更强

预期中的Go 2不会有了&#xff0c;1.20也算是一个小gap&#xff0c;从中可以一窥Go未来的发展之路。对于Go来说&#xff0c;未来保持1.x持续演进和兼容性之外&#xff0c;重点就是让Go性能更优&#xff0c;同时保持大道至简原则&#xff0c;使用尽可能容易&#xff0c;从这两个…...

图片显示一半怎么回事?

不知道小伙伴是否遇到过&#xff0c;刚刚上传的一个文件夹&#xff0c;有一多半的图片突然就变成了无法显示该图片或者是图片显示一半&#xff0c;而另外一半就显示灰色蓝色粉色条状。而且还把原文件删除了。面对这种情况&#xff0c;有什么解决方法呢?下面让我们一起来来看看…...

102-并发编程详解(中篇)

这里续写上一章博客 Phaser新特性 &#xff1a; 特性1&#xff1a;动态调整线程个数 CyclicBarrier 所要同步的线程个数是在构造方法中指定的&#xff0c;之后不能更改&#xff0c;而 Phaser 可以在运行期间动态地 调整要同步的线程个数&#xff0c;Phaser 提供了下面这些方…...

jsp羽毛球场馆管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 羽毛球场馆管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;…...

CacheLib 原理说明

CacheLib 介绍 CacheLib 是 facebook 开源的一个用于访问和管理缓存数据的 C 库。它是一个线程安全的 API&#xff0c;使开发人员能够构建和自定义可扩展的并发缓存。 主要功能&#xff1a; 实现了针对 DRAM 和 NVM 的混合缓存&#xff0c;可以将从 DRAM 驱逐的缓存数据持久…...

【dapr】服务调用(Service Invokation) - app id的解析

逻辑图解 上图来自Dapr官网教程&#xff0c;其中Checkout是一个服务&#xff0c;负责生成订单号&#xff0c; Order Processor是另一个服务&#xff0c;负责处理订单。Checkout服务需要调用Order Processor的API&#xff0c; 让Order Processor获取到其生成的订单号并进行处理。…...

Odoo丨5步轻松实现在Odoo中打开企微会话框

Odoo丨5步轻松实现在Odoo中打开企微会话框 在Odoo中开启企微会话框 企业微信作为一个很好的企业级应用发布平台&#xff0c;尤其是提供的数据和接口&#xff0c;极大地为很多企业级应用提供便利&#xff0c;在日常中应用广泛&#xff01; 最近在项目中就遇到一个与企业微信相…...

python读取.stl文件

目录 .1 文本方式读取 1.2 stl解析 1.3 stl创建 .2 把点转换为.stl .1 文本方式读取 代码如下 stl_path/home/pxing/codes/point_improve/data/003_cracker_box/0.stlpoints[] f open(stl_path) lines f.readlines() prefixvertex num3 for line in lines:#print (l…...

vue2.0项目第一部分

论坛项目后端管理系统服务器地址&#xff1a;http://172.16.11.18:9090swagger地址&#xff1a;http://172.16.11.18:9090/doc.html前端h5地址&#xff1a;http://172.16.11.18:9099/h5/#/前端管理系统地址&#xff1a;http://172.16.11.18:9099/admin/#/搭建项目vue create . …...

锁与原子操作

锁与原子操作 锁 以自增操作为例子&#xff1a; void *func(void *arg) {int *pcount (int *)arg;int i 0;//while (i < 100000) {(*pcount) ; // 并不会到达100000usleep(1);} }int main(){int i 0;for (i 0;i < THREAD_COUNT;i ) {pthread_create(&thid…...

Prometheus Pushgetway讲解与实战操作

目录 一、概述 1、Pushgateway优点: 2、Pushgateway缺点: 二、Pushgateway 架构 三、实战操作演示...

常见字符串函数的使用,你确定不进来看看吗?

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;C语言航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&a…...

Elasticsearch:在搜索中使用衰减函数(Gauss)

在我之前的文章 “Elasticsearch&#xff1a;使用 function_score 及 script_score 定制搜索结果的分数” 我有讲到 Decay 函数在搜索中的使用。在那里&#xff0c;我有一个例子讲述在规定的时间里&#xff0c;分数不进行衰减。同一的函数也可以适用于地理位置的搜索。位置搜索…...

微信小程序 Springboot英语在线学习助手系统 uniapp

四六级助手系统用户端是基于微信小程序端&#xff0c;管理员端是基于web端&#xff0c;本系统是基于java编程语言&#xff0c;mysql数据库&#xff0c;idea开发工具&#xff0c; 系统分为用户和管理员两个角色&#xff0c;其中用户可以注册登陆小程序&#xff0c;查看英语四六级…...

LeetCode算法题解——双指针2

LeetCode算法题解——双指针2第五题思路代码第六题思路代码第七题思路代码这里介绍双指针在数组中的第二类题型&#xff1a;两端夹击。 第五题 977. 有序数组的平方 题目描述&#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的…...

线性杂双功能peg化试剂——HS-PEG-COOH,Thiol-PEG-Acid

英文名称&#xff1a;HS-PEG-COOH&#xff0c;Thiol-PEG-Acid 中文名称&#xff1a;巯基-聚乙二醇-羧基 HS-PEG-COOH是一种含有硫醇和羧酸的线性杂双功能聚乙二醇化试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。巯基或SH、巯基或巯基选择性地与马来酰亚胺、OPSS、…...

Linux第三讲

目录 三、 磁盘和文件管理和使用检测和维护 3.1 磁盘目录 3.2 安装软件 3.2.1 rpm命令 3.2.2 克隆虚拟机 3.2.3 yum或压缩包方式安装jdk 3.2.4 使用虚拟机运行SpringBoot项目 3.2.5 安装mysql80&#xff08;57&#xff09; 3.2.6 运行web项目 3.2.7 安装tomcat 三、 …...

从Pikachu靶场实战解析越权漏洞:原理、攻击与防御

1. 越权漏洞&#xff1a;Web安全的隐形杀手 第一次接触越权漏洞是在三年前的一次渗透测试中&#xff0c;当时客户系统有个"查看订单详情"的功能&#xff0c;我无意间发现修改URL中的订单ID就能看到别人的订单信息。这种看似简单的漏洞&#xff0c;实际上危害极大——…...

基于comsol仿真的手性超表面圆二色性分析及其在圆偏振光照射下的响应研究

手性超表面圆二色性comsol仿真 左右旋圆偏振光照射超表面的仿真&#xff0c; 圆二色性的计算 comsol光学仿真最近在折腾手性超表面的仿真&#xff0c;发现用COMSOL搞圆二色性&#xff08;CD&#xff09;计算这事挺有意思的。特别是左右旋圆偏振光打上去之后&#xff0c;结构的手…...

做客户管理之前,先看看这 6 个教训

方案 A&#xff1a;传统开发方式分析 传统开发需要组建专业团队&#xff0c;包括产品经理、UI 设计师、前后端开发、测试工程师等。中等规模项目团队 5-8 人&#xff0c;开发周期 3-6 个月&#xff0c;人力成本 30-100 万。开发过程中需求沟通成本高&#xff0c;业务人员用自然…...

OpenClaw任务编排:GLM-4.7-Flash复杂流程设计

OpenClaw任务编排&#xff1a;GLM-4.7-Flash复杂流程设计 1. 为什么需要任务编排 去年我接手了一个市场分析项目&#xff0c;需要每周手动收集竞品动态并生成报告。重复性的复制粘贴和格式调整消耗了大量时间&#xff0c;直到发现OpenClaw可以通过编排GLM-4.7-Flash模型实现全…...

别再瞎猜了!YOLOv8 模型缩放(width_multiple)与通道计算(c1,c2)的完整逻辑

YOLOv8模型通道计算与宽度系数的工程化实践指南 在移动端部署YOLOv8模型时&#xff0c;许多工程师会遇到一个典型困境&#xff1a;明明按照官方文档调整了width_multiple参数&#xff0c;却发现模型要么计算量超出预期&#xff0c;要么精度断崖式下跌。这背后其实隐藏着YOLOv8通…...

玩转AI!用FastAPI+RAG轻松构建智能文档问答系统,代码、文档全公开!

在企业数字化转型的浪潮中&#xff0c;我们常遇到这样一个痛点&#xff1a;海量的业务文档、研究报告、技术手册堆积如山&#xff0c;当需要从中寻找某个特定答案时&#xff0c;员工往往要花费数小时甚至数天进行翻阅。这不仅是效率的浪费&#xff0c;更是知识资产沉睡的体现**…...

Laravel Backup隔离模式详解:多服务器环境下的终极安全备份方案

Laravel Backup隔离模式详解&#xff1a;多服务器环境下的终极安全备份方案 【免费下载链接】laravel-backup A package to backup your Laravel app 项目地址: https://gitcode.com/gh_mirrors/la/laravel-backup Laravel Backup包为Laravel应用提供了强大可靠的备份解…...

Java高频面试题:RocketMQ有哪些使用场景?

大家好&#xff0c;我是锋哥。今天分享关于【Java高频面试题&#xff1a;RocketMQ有哪些使用场景&#xff1f;】面试题 。希望对大家有帮助&#xff1b;Java高频面试题&#xff1a;RocketMQ有哪些使用场景&#xff1f;RocketMQ 是阿里巴巴开源的一款分布式消息中间件&#xff0…...

CnDataSeed发布:中国科研工作者跳槽研究数据库(CAMRD)

一、数据简介 追踪学术流动&#xff0c;解析科研人才动力机制&#xff01; 在中国科研生态快速演化的背景下&#xff0c;科研人才流动是科研创新与学术产出的关键驱动力。但跳槽相关研究在高教研究中一直较为稀缺&#xff0c;系统化、可量化的科研工作者跳槽数据长期缺失&…...

用MobaXterm替代传统终端的完整指南

Windows远程运维革命&#xff1a;用MobaXterm替代传统终端的完整指南 每次打开 PuTTY 时&#xff0c;你是否会对着那个灰暗的界面叹气&#xff1f;当需要在Xshell中频繁切换标签时&#xff0c;是否感到效率低下&#xff1f;作为Windows系统管理员或开发者&#xff0c;我们长期忍…...