对c语言中的指针进行深入全面的解析
1.普通的指针:
实际上指针就是存放地址的变量,eg:
int a=10;
int *p=&a;
拆分一下int *中的*说明p是一个指针,int是它所指向的类型;
2.字符串指针和字符串数组
char*str1="abcd";
先看这一个,这个就是一个字符串指针,它是一个常量指针,在c中才能这么定义,如果是cpp中,
它会强制要求你用 const char* str1="abcd";
这个指针是让"abcd"这个字符串的地址赋予给了str1,而它们的地址是处于静态内存区的,你是无法进行修改的。
而字符串数组,eg
char str[20]="abcd";
这个就是生成了一个空间用于存放这个字符串,这个空间中的内容是可以修改的,所以一般的str函数操作的字符串都是在操作这一个。
3.指针与数组相互联系:
int arr[10]={0};
int *p=arr;
这里的arr指的是arr数组的首元素的地址 既为arr[0]的地址;
&arr则指的是整个数组,让我们验证一下这件事:

从16进制的转换可以得知,这里跳过了40个字节,也就是10个int,说明&arr确实指向的是arr这整一个数组;说到这里,让我们拓展一下,sizeof中出现arr时,代表的也是整一个数组,
int sz = sizeof(arr) / sizeof(arr[0]);
所以我们总是会使用这种方式去求取整型数组中元素的个数;总结一下:
只有在sizeof(arr)和&arr时arr代表的是整个数组,否则都是数组首元素的地址;
这个在二维数组也是成立的,让我们来证明这件事。eg:
1:

跳过了20个字节,也就是5个int;
2:
int arr[3][5]={0};
int (*pf)[5]=arr;这里需要使用(数组指针才能够接受它的地址)
4.数组指针,指针数组等的讲解
char* arr[10]={0};
这个就是一个指针数组(也就是存放指针的数组),char* 代表了是一个char类型的指针,[10]说明了是一个数组;为什么不是数组指针呢?因为数组指针是长这样的 char (*arr)[10](一般是用于处理二维数组比较常用);上面那个是先跟数组组合的,说明是一个数组。
这里附上指针数组使用的例子,数组指针容易错误使用的例子和正确使用的例子。
1.指针数组的使用例子

打印的那个也可以换成arr[j][i]也没有关系,相当于模拟了一个二维数组的效果;
2.数组指针的错误使用

3.数组指针的正确使用例子

5.函数指针
5.1简单介绍
void add(int a,int b){
return a+b;
}
int (*pf)(int a, int b)=add;
这里相当于定义了一个函数指针,让add函数的首地址赋值给了pf,(*pf)()这个格式说明了是一个函数指针,但是有一点要注意的就是在调用的时候,可以不用解引用符号,pf(2,3)即可,为什么呢?因为你没发现函数在调用的时候也是add(2,3)吗,但是如果为了思维上更严谨,你当然也可以加
既 (*pf)(2,3)注意要用括号;
5.2函数指针在函数声明方面的引用
void (*(*pf)(int a,void (*)(int a)))(int a)
这个是个函数指针,怎么看呢?
A=(*pf)(int a,void (*)(int a))
首先把 void(*A)()
这样你是不是就看出来了呢
怎么理解这件事情呢?请看下面
typedef void(*)(int a) pf_t 这样重命名是错误的,要用下面的方式
typedef void(*pf_t)(int a); 既把void(*)(int a) 简化为pf_t
pf_t pf(int a,pf_t)
与 int add(int a, int b)这样的函数声明是不是就能联系上了呢?
相关文章:
对c语言中的指针进行深入全面的解析
1.普通的指针: 实际上指针就是存放地址的变量,eg: int a10; int *p&a; 拆分一下int *中的*说明p是一个指针,int是它所指向的类型; 2.字符串指针和字符串数组 char*str1"abcd"; 先看这一个,这个就是一个字符串…...
xxl-job 适配达梦数据库
前言 在数字化转型的浪潮中,任务调度成为了后端服务不可或缺的一部分。XXL-JOB 是一个轻量级、分布式的任务调度框架,广泛应用于各种业务场景。达梦数据库(DM),作为一款国内领先的数据库产品,已经被越来越…...
Linux 配置与管理 SWAP(虚拟内存)
Linux 配置与管理 SWAP(虚拟内存) 一、作用二、创建交换文件(以创建一个2GB的交换文件为例)1. 创建交换文件2. 设置文件权限2.1. **关于 sudo chmod 600 /root/swapfile 是否一定要执行**2.2. **关于其他用户启动是否没权限用到交换分区** 3.…...
yolo自动化项目实例解析(七)自建UI--工具栏选项
在上一章我们基本实现了关于预览窗口的显示,现在我们主要完善一下工具栏菜单按键 一、添加工具栏ui 1、配置文件读取 我们后面要改的东西越来越多了,先加个变量文件方便我们后面调用 下面我们使用的config.get意思是从./datas/setting.ini文件中读取关键…...
贝锐洋葱头浏览器随时随地访问教务系统,轻松搞定选课
教育网的“拥堵”早已是老生常谈,学生数量庞大、上网时间集中、带宽有限,导致网络速度慢。尤其是从外部网络访问教育网时,更是因为跨运营商的缘故变得缓慢。 而学校内网也是类似的情况,课余时间和上课时间的网络使用情况差别巨大…...
django drf to_internal_value
使用场景 用于将接收到的输入转换为内部可用的数据形式; 例子 to_internal_value主要在反序列化时用到,其作用处理API请求携带的数据,对其进行验证并转化为Python的数据类型。 假如我们的API客户端通过请求提交了额外的数据,比…...
map(lambda x: x[0], sorted(count.items(), key=lambda x: (-x[1], x[0]))[:n])
被解析的代码行 map(lambda x: x[0], sorted(count.items(), keylambda x: (-x[1], x[0]))[:n])假设的输入 假设我们有以下的 count 字典,其中包括一些字符串及其对应的计数: count {apple: 3,banana: 1,orange: 2,grape: 2 }1. count.items() 首先…...
灰度重心法求取图像重心
1 概述 灰度重心法(Gray-scale Center of Mass Method)是一种在图像处理和计算机视觉中常用的方法。这种方法主要用于确定图像中物体的质心或重心位置,特别是在灰度图像中。 灰度重心法的基本思想是,根据图像中每个像素的灰度值及其位置信息来计算一个加权重心,这个重心…...
Go Mail设置指南:如何提升发送邮件效率?
Go Mail使用技巧与配置教程?如何用Go Mail实现发信? 随着工作负载的增加,如何高效地发送和管理邮件成为了许多职场人士面临的挑战。AokSend将为您提供一份详细的Go Mail设置指南,帮助您提升发送邮件的效率,让您的邮件…...
kali的tplmap使用报错解决
问题 当我们直接使用kali下的tplmap时报错了。 Tplmap 0.5 Automatic Server-Side Template Injection Detection and Exploitation Tool Testing if GET parameter name is injectable Exiting: module collections has no attribute Mapping 这是因为tplmap要求的版本…...
DAY16||513.找树左下角的值 |路径总和|从中序与后序遍历序列构造二叉树
513.找树左下角的值 题目:513. 找树左下角的值 - 力扣(LeetCode) 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: […...
使用jQuery处理Ajax
使用jQuery处理Ajax HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 所有的WWW文件都必须遵守这个标准 一次HTTP操作称为一个事务&am…...
uni-app App版本更新
效果图: 前言 在移动应用开发中,确保用户能够及时更新到最新版本是非常重要的。本文将介绍如何在 uni-app 中实现 App 整包更新功能,并提供相关代码示例以帮助理解。 代码实现 2.1 引入模块 首先,我们需要引入用于处理更新的模块…...
Python Web 与低代码/无代码平台的深度融合
Python Web 与低代码/无代码平台的深度融合 目录 🚀 低代码与无代码平台的兴起🔗 Python 与低代码平台集成🌐 低代码开发的最佳实践📊 数据集成与自动化 1. 🚀 低代码与无代码平台的兴起 低代码和无代码平台的出现&…...
js 如何监听 body 内容是否改变
如果您想监听body内容的变化,并作出响应,可以使用MutationObserver。以下是一个简单的例子,它会在body内容变化时在控制台输出一条消息: // 创建一个观察者对象 const observer new MutationObserver(function(mutations, obser…...
python: 数字类型的一些函数
len(str) round(x, d) 对x进行四舍五入保留小数点后d位 round(3.45,1) 即 3.5 pow(x, y) # x的y次幂. x ** y pow(x, y[,z]) # 幂余 ( x ** y) % z print(pow(3, pow(3, 99), 10000)) #4587 浮点数…...
MapReduce学习与理解
MapReduce为google分布式三驾马车之一。分别为《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。三遍论文奠定了分布式存储和计算的基础。本篇文章来说说mapreduc…...
Animal objDog = new Dog()和 Dog objDog = new Dog()的区别
文章目录 1、Animal objDog new Dog()和 Dog objDog new Dog()的区别1. **对象类型(引用类型)**2. **调用和可用成员**3. **示例代码来说明**使用示例总结 2、Animal objDog new Dog();不能调用dog的方法和属性是为什么?原因解析解决方法小…...
springboot引入netty
配置类 import cn.hutool.core.thread.ThreadUtil; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.PooledByteBufAllocator; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChanne…...
PWM基础与信号控制
1. 什么是PWM? PWM(Pulse Width Modulation,脉宽调制)是一种通过改变信号的占空比来控制电压输出的技术。简单来说,PWM信号由一系列高低电平组成,通过调节高电平持续的时间比例,可以控制信号的…...
Vue3+Tauri实战:从零构建桌面聊天应用,仿微信核心功能解析
1. 为什么选择Vue3Tauri开发桌面应用 最近两年桌面应用开发领域出现了一个有趣的现象:传统Electron应用虽然依然流行,但开发者们开始寻找更轻量、性能更好的替代方案。这就是Tauri逐渐受到关注的原因。作为一个长期使用Electron的老手,我第一…...
本地部署 LookScanned:轻松将 PDF 转为逼真扫描件,结合内网穿透实现远程访问
前言 本文主要介绍了 LookScanned 这款工具的部署与使用方法。LookScanned 可将普通电子 PDF 转换为高度逼真的纸质扫描件效果,全程本地处理保障隐私,操作简单且无需打印扫描的物理步骤。 文中详细讲解了在极空间通过 Docker 部署 LookScanned 的流程&…...
洛谷-入门4-数组3
P2141 [NOIP 2014 普及组] 珠心算测验 题目背景 NOIP2014 普及 T1 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。 某学…...
图像标注难题如何破解?LabelImg工具全面解析与实战指南
图像标注难题如何破解?LabelImg工具全面解析与实战指南 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out L…...
Qwen3Guard-Gen-8B真实案例:如何用AI模型自动拦截不当言论
Qwen3Guard-Gen-8B真实案例:如何用AI模型自动拦截不当言论 1. 引言:内容安全的新挑战 在数字内容爆炸式增长的今天,各类平台都面临着内容审核的巨大压力。传统的关键词过滤和规则匹配系统已经难以应对日益复杂的网络环境,特别是…...
告别‘翻老课本’:用SHOT和NRC搞定Source-Free Domain Adaptation,附PyTorch代码解读
实战解析SFDA:SHOT与NRC的PyTorch实现与调优指南 当你在医疗影像分析项目中训练好的模型需要迁移到另一家医院时,却被告知无法共享原始数据——这就是Source-Free Domain Adaptation(SFDA)要解决的核心问题。作为算法工程师&#…...
SAC算法实战:用PyTorch实现自动驾驶控制(附完整代码)
SAC算法实战:用PyTorch构建自动驾驶控制系统 在自动驾驶技术快速发展的今天,强化学习已成为解决复杂决策问题的有力工具。而Soft Actor-Critic(SAC)算法凭借其在连续动作空间中的卓越表现,正在成为自动驾驶控制领域的新…...
300FPS的实时目标跟踪是怎么炼成的?手把手拆解KCF算法里的数学魔法
300FPS实时目标跟踪背后的数学魔法:KCF算法深度解密 在计算机视觉领域,实时目标跟踪一直是个令人着迷又充满挑战的问题。想象一下,当你在观看一场足球比赛时,摄像机需要实时锁定某个球员;或者当自动驾驶汽车行驶时&am…...
格式排版改到崩溃?高校教授说用这几个AI论文写作工具
论文写作总让人头大?格式排版改到崩溃、文献检索效率低、逻辑结构不清晰……这些痛点你是不是也遇到过?其实,只要用对 AI 工具、走对流程,就能事半功倍。资深教授建议,从选题到降重,全程使用专业工具辅助&a…...
水墨江南模型生成作品效果展示:极简山水与诗意融合
水墨江南模型生成作品效果展示:极简山水与诗意融合 最近试用了不少AI绘画模型,但能真正抓住中式美学神韵的,确实不多。直到我遇见了这个“水墨江南”模型,它生成的作品让我眼前一亮——那种留白的意境、水墨的晕染感,…...
