P41-指针进阶1、2
1.字符指针
2.数组指针
3.指针数组
4.数组传参和指针传参
5.函数指针
6.函数指针数组
7.指向函数指针数组的指针
8.回调函数
9.指针和数组面试题的解析
指针的主题,我们在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念
1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。
⒉.指针的大小是固定的4/8个字节( 32位平台/64位平台)。
3.指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。
4.指针的运算。
字符指针
在指针的类型中我们知道有一种指针类型为字符指针char*
一般使用
还有另一种使用方式如下:
举一个例子:
str1和str2是两个字符数组,比较str1和str2时,相当于比较数组str1和数组str2的首元素地址,而str1与str2是两个不同的字符数组,创建数组str1和数组str2是会开辟两块不同的空间,它们的首元素地址当然不同。
这里str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。
注意:常量字符串与普通字符串最大的区别是,常量字符串是不可被修改的字符串,既然不能被修改,那么在内存中没有必要存放两个一模一样的字符串,所以在内存中相同的常量字符串只有一个。
指针数组
在《指针》章节我们也学习了指针数组,指针数组是一个存放指针的数组
数组指针
数组指针是一个指针,指向数组的指针
&数组名VS数组名
数组名是数组首元素地址,但是也有两个例外:
****1.**sizeof(数组名)**
** 这里的数组名表示整个数组,计算的大小也是整个数组的大小,单位为字节**
2.**&数组名**
** 数组名表示整个数组,取出的是整个数组的地址**
数组指针的使用
数组指针一般应用于二维数组及以上
分析下面的代码
int arr[5]; //整型数组int *parr1[10]; //整型的指针数组int (*parr2)[10]; //数组指针,该指针指向一个数组,数组为10个元素,每个元素的类型为intint (*parr3[10])[5]; //parr3是一个指针数组,该数组能够存放十个数组指针//每个数组指针能够指向一个数组,数组5个元素,每个元素是int类型这段代码定义了一个指针数组 parr3,该数组有10个元素,每个元素都是一个指向含有5个整数的数组的指针。让我们分解一下这个定义:- parr3[10]:这是一个包含10个元素的数组。
- (*parr3[10]):这里的星号表示这是一个指针数组,即数组的每个元素都是一个指针。
- (*parr3[10])[5]:这表示数组的每个元素(即每个指针)都指向一个包含5个整数的数组。所以,parr3 是一个指针数组,每个指针都指向一个大小为5的整数数组。
数组参数、指针参数
如何将数组
或者指针
传给函数呢?
一维数组传参
#include <stdio.h>
void test(int arr[])//ok? 传数组名,用数组接收,数组元素个数可省略 正确
{}
void test(int arr[10])//ok? 同上的道理 正确
{}
void test(int *arr)//ok? 数组名是首元素地址,用指针接收 正确
{}
void test2(int *arr[20])//ok? 用同样的指针数组接收 正确
{}
void test2(int **arr)//ok? 数组名是首元素地址,而该数组元素是指针,所以地址是int**类型,// 用二级指针接收 正确
{}
int main()
{int arr[10] = {0};int *arr2[20] = {0};test(arr);test2(arr2);
}
二位数组传参
void test(int arr[3][5])//ok? 用二维数组接收 正确
{}
void test(int arr[][])//ok? 用二维数组接收,行可以省略,但列不能省略 错误
{}
void test(int arr[][5])//ok? 用二维数组接收 正确
{} void test(int *arr)//ok? 这里不能用一级指针接收 错误
{}
void test(int* arr[5])//ok? 这是个指针数组,不能传首地址 错误
{}
void test(int (*arr)[5])//ok? 用数组指针接收 正确
{}
void test(int **arr)//ok? 这里不能用二级指针接收 错误
{} int main()
{ int arr[3][5] = {0}; test(arr); //这里传入的是首元素地址
}
相关文章:
P41-指针进阶1、2
1.字符指针 2.数组指针 3.指针数组 4.数组传参和指针传参 5.函数指针 6.函数指针数组 7.指向函数指针数组的指针 8.回调函数 9.指针和数组面试题的解析 指针的主题,我们在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念 1.指针就是个…...
旅游类小程序界面设计
产品概述 艾啦游是一款互联网旅游类小程序,致力于国内精品旅游,以及拥有自由行、专属热榜单、出行攻略等诸多功能,汇聚了许多国内的人气景点,与诸多城市的酒店也保持合作,打造一体式旅行服务,更有不断上新…...
探索具身多模态大模型:开发、数据集和未来方向(下)
25年2月来自广东人工智能和数字经济实验室、深圳大学、巴黎理工学院和巴黎高等师范学院、中山大学的论文“Exploring Embodied Multimodal Large Models: Development, Datasets, and Future Directions”。 近年来,具身多模态大模型 (EMLM) 因其在复杂的现实环境中…...
14 结构体
结构体 结构体是什么? 在前面我们学习过基础的数据类型int float char 等,都只能用来表示基础的数据类型,那么要怎么来表示复杂的数据类型呢? 比如学生信息: 学号姓名性别年龄总分数100maye男18666101椰汁女19555 …...
如何配置 Docker 以实现无需 sudo 使用
1. 背景知识:为什么需要 sudo? Docker 是一个容器化平台,其核心组件包括: Docker 守护进程(dockerd):负责管理容器的创建、运行和销毁。Docker CLI:用户通过命令行工具(…...
嵌入式开发之STM32学习笔记day06
基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格…...
openocd C#桌面工具
文章目录 简介一、主界面二、文件列表三、rtl介绍四、虚拟示波器1、画线2、画点3、合并显示4、测试代码简介 基于廉价9.9包邮的DAP-Link,在IAR和Keil中下载和调试都没毛病。 可是不能单独使用。单独烧录固件用不了,也不能同jlink一样打印日志和显示波形。 openocd开源工具能…...
goland小问题报错及解决
报错信息: cannot use rw (variable of type *populateResponse) as ResponseWriter value in argument to t.fh.ServeHTTP: *populateResponse does not implement ResponseWriter (missing method Fprintf) cannot use rw (variable of type *http2responseWrite…...
AtCoder Beginner Contest 397 A - D题解
Tasks - OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397) 本文为 AtCoder Beginner Contest 397 A - D题解 题目A: 代码(C): #include <bits/stdc.h>int main() {double n;std::cin >> n;if (n > 38.0) {std::cout << 1;}…...
18年老牌软件,完美解锁pro!
很多小伙伴在学习、工作中都喜欢使用思维导图来整理和记录自己的思路,通过图形化的方式展示复杂概念和关系,使信息更加清晰易懂,有助于理解和记忆;其次,分层次和分类别的信息结构也能够快速理清思路,突出重…...
Power Apps 技术分享:画布应用使用表单控件
前言 表单控件,是画布应用里一个非常好用的控件,我们今天简单介绍下,如何使用这个控件。 正文 1.首先,我们需要有一个数据源,我们这里用上一篇博客新建的数据源,如下图: 2.新建一个页面…...
视频转音频, 音频转文字
Ubuntu 24 环境准备 # 系统级依赖 sudo apt update && sudo apt install -y ffmpeg python3-venv git build-essential python3-dev# Python虚拟环境 python3 -m venv ~/ai_summary source ~/ai_summary/bin/activate核心工具链 工具用途安装命令Whisper语音识别pip …...
ZLMediaKit源码分析——[1] 开篇:onceToken源码分析
系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一:获取音频和视频设备 第五篇 WebRTC学习二:WebRTC音视频数据采集 第六篇 WebRTC学习三:WebRTC音视频约束 …...
EasyRTC嵌入式音视频通话SDK:微信生态支持、轻量化架构与跨平台兼容性(Linix/Windows/ARM/Android/iOS/LiteOS)
随着WebRTC技术的不断发展,实时音视频通信在各个领域的应用越来越广泛。EasyRTC嵌入式音视频通话SDK作为一款基于WebRTC技术的实时通信解决方案,凭借其强大的功能和灵活的集成能力,受到了越来越多开发者的关注。 一、系统架构设计 纯C语言开…...
Python中使用vlc库实现视频播放功能
文章目录 前言1. 环境准备1.1Python安装1.2选择Python开发环境1.3安装必要库 2. 基础播放示例3. 常用播放控制功能4. 事件监听5. 播放网络流媒体6. 结合 GUI 库制作视频播放器(以 Tkinter 为例) 前言 本教程主要包含打开文件、播放和停止按钮࿰…...
Elasticsearch面试题
以下是150道Elasticsearch面试题及其详细回答,涵盖了Elasticsearch的基础知识、配置与优化、查询操作、集群管理、性能调优等多个方面,每道题目都尽量详细且简单易懂: Elasticsearch基础概念类 1. 什么是Elasticsearch? Elastics…...
Linux上位机开发实战(qt编译之谜)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很多同学都喜欢用IDE,也能理解。因为不管是visual studio qt插件,还是qt creator其实都帮我们做了很多额外的工作。这里面最…...
SpringBoot3+Druid+MybatisPlus多数据源支持,通过@DS注解配置Service/Mapper/Entity使用什么数据源
在 Spring Boot 3 中结合 Druid 和 MyBatis-Plus 实现多数据源支持,并通过 DS 注解动态切换数据源,可以按照以下步骤进行配置: 官方文档:多数据源支持 | MyBatis-Plus 1. 引入依赖 在 pom.xml 中添加以下依赖: <…...
Java学习------内部类
1. 定义 定义在一个类中的类 2. 使用时机 当一个类需要用到另一个类,并且两个类的联系比较密切时就需要使用内部类内部类可以访问外部类的私有成员,这样可以将相关的类和接口隐藏在外部类的内部,提高封装性匿名内部类是没有名字的类&#…...
【QA】建造者模式在Qt有哪些应用
#设计模式 #Qt 一、QDomDocument(XML 文档构建) 模式角色: Builder:QDomDocument 本身Product:XML 文档对象Director:用户代码通过 QDomDocument 逐步构建文档结构 示例代码: QDomDocument…...
uniapp 多环境配置打包,比较优雅的解决方案,全网相对优解
uniapp 多环境配置打包,比较优雅的解决方案,全网相对优解 读取.env.[development|test|staging|production]配置文件进行打包,最终效果如下图可以看到多个环境, 并且我们可以自定义更多的环境配置 前言 由于uniapp的hbuilder开发…...
【量化科普】Liquidity,流动性
【量化科普】Liquidity,流动性 🚀量化软件开通 🚀量化实战教程 在金融市场中,流动性(Liquidity)是一个至关重要的概念。它指的是资产能够以多快的速度被买入或卖出而不显著影响其价格的能力。高流动性的…...
qt介绍图表 charts 一
qt chartsj基于Q的Graphics View框架,其核心组件是QChartView和QChart.QChartView是一个显示图表的独立部件,基类为QGraphicsView.QChar类管理图表的序列,图例和轴示意图。 绘制一个cos和sin曲线图,效果如下 实现代码 #include…...
如何图像去噪?(一)
喜欢可以在我的主页订阅专栏哟,至少更新6年~~,更到我上大学也可能会继续更~~ 第一章 图像去噪的基础知识与核心概念 1.1 图像噪声的数学模型与物理成因 定义扩展: 图像噪声是信号采集、传输或存储过程中引入的随机干扰,其本质为…...
【数据库】Data Model(数据模型)数据模型分析
理解图片中的 Data Model(数据模型)是学习数据库设计和应用程序开发的重要一步。作为初学者,你可以通过比喻和简单的解释来理解这些概念以及它们之间的联系。以下是对图片中数据模型的详细分析,以及如何理解它们之间的关系。 1. 数…...
win10 c++ VsCode 配置PCL open3d并显示
win10 c VsCode配置PCL open3d并显示 一、效果图二、配置步骤2.1 安装vscode2.2 pcl-open3d配置2.3 vscode中设置 三、测试代码四、注意事项及后续 一、效果图 二、配置步骤 2.1 安装vscode vscode下载链接 下载中文插件、c相关插件 2.2 pcl-open3d配置 1)下载…...
Flask多参数模版使用
需要建立目录templates; 把建好的html文件放到templates目录里面; 约定好参数名字,单个名字可以直接使用;多参数使用字典传递; 样例: from flask import render_template # 模板 (Templates) #Flask 使用…...
python中a is None 和 a==None有区别吗
在 Python 中,a is None 和 a None 的区别如下: 1. a is None 这是身份(identity)比较,用于检查 a 是否就是 None 这个对象。None 是 Python 的单例对象,意味着在 Python 运行过程中,所有 No…...
Excel(函数篇):COUNTIF与CONUTIFS函数、SUMIF与SUMIFS函数、ROUND函数、MATCH与INDEX函数、混合引用与条件格式
目录 COUNTIF和COUNTIFS函数COUNTIF函数COUNTIFS函数SUMIF和SUMIFS函数SUMIF函数SUMIFS函数SUMIFS函数与控件实现动态年月汇总ROUND、ROUNDUP、ROUNDDOWN函数单元格混合引用条件格式与公式,标记整行数据MATCH和INDEX函数COUNTIF和COUNTIFS函数 COUNTIF函数 统计下“苏州”出现…...
C语言及内核开发中的回调机制与设计模式分析
在C语言以及操作系统内核开发中,回调机制是一种至关重要的编程模式。它通过注册框架和定义回调函数,实现了模块间的解耦和灵活交互,为系统的扩展性和可维护性提供了有力支持。本文将深入探讨这种机制的工作原理、应用场景以及与设计模式的关联。 一、回调机制的核心概念 (…...
SAP WORKFLOW BUSINESS PROCESS AUTOMATION
SAP WORKFLOW BUSINESS PROCESS AUTOMATION...
它,让机器人与HMI屏无缝对接
随着工业自动化向智能化发展,机器人与HMI屏的通信变得至关重要。本文将为您介绍一款创新的解决方案,它打破了通信协议的壁垒,实现机器人与HMI屏的无缝连接。 随着工业自动化向智能化的迈进,生产制造业正加速引入大量工业机器人以替…...
Vala语言基础知识-源文件和编译
源文件和编译 Vala代码以.vala为扩展名。与Java等语言不同,Vala不强制要求严格的文件结构——它没有类似Java的"包"(package)或"类文件"(class file)的概念,而是通过文件内的文本…...
《mc百科》小引
现在的年轻人,不是玩农药,就是在打和平,几乎每到街上,想就看见农药上号的,但这些游戏,虽然宜人,但随时都能让人异化。 但有一种游戏,可以说几乎涵盖了所有文化。早其自由度高达999%…...
java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性
在 Java 中,泛型通配符(?)用于表示未知类型,通常用于增强泛型的灵活性。通配符可以与上下限结合使用,以限制泛型的范围。以下是通配符及上下限的使用示例: 1. 无界通配符 (?) 无界通配符表示可以接受任意…...
PyQt6内嵌http.server Web 和Flask Web服务器方法详解
PyQt6 可以内嵌一个简单的 Web 服务器。虽然 PyQt6 本身不提供直接的 Web 服务器功能,但可以结合 Python 的标准库(如 http.server)或其他 Web 框架(如 Flask、FastAPI 等)来实现。 示例:使用 http.server…...
【ProjectDiscovery 生态中核心工具 Subfinder、Httpx、Katana 和 Nuclei 的基础使用教程】
ProjectDiscovery 生态中核心工具 Subfinder、Httpx、Katana 和 Nuclei 的基础使用教程 一、Subfinder:子域名发现工具安装基础使用 二、Httpx:HTTP 探测与指纹识别安装基础使用 三、Katana:网络爬虫工具安装基础使用 四、Nuclei:…...
【Linux系统】进程地址空间详解
Linux系列 文章目录 Linux系列前言一、地址空间的区域划分二、进程地址空间的引入2.1 地址空间的概念2.2 地址空间2.3 进程地址空间的优点 三、页表3.1 区域权限管理3.2 惰性加载 总结 前言 进程地址空间是操作系统为每个运行中的进程分配的一个虚拟内存视图,它是所…...
使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题
目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库,查看库与库的依赖关系以及接口调用情况,定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程ÿ…...
蓝桥杯 刷题统计
问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题? 输入格式 输入一行包含三个整数 a,b和 n. 输出格式 输出一个整数代表天数。 样…...
019-RSA
RSA 一、RSA技术原理与流程(附流程图) 密钥生成流程 graph TDA[选择大质数p/q] --> B[计算np*q]B --> C[计算 “φ(n)p-1*q-1”]C --> D[选择e与φ(n)互质]D --> E[计算d满足ed≡1 mod φ&am…...
《 C++ 点滴漫谈: 三十一 》函数重载不再复杂:C++ 高效调试与性能优化实战
摘要 本篇博客深入探讨了 C 中的函数重载及其调试技巧。首先,介绍了函数重载的基本概念及其在 C 编程中的应用,强调了如何通过函数重载提高代码的灵活性和可读性。接着,我们讨论了函数重载的常见问题,如二义性、隐式类型转换和重…...
2024年消费者权益数据分析
📅 2024年315消费者权益数据分析 数据见:https://mp.weixin.qq.com/s/eV5GoionxhGpw7PunhOVnQ 一、引言 在数字化时代,消费者维权数据对于市场监管、商家诚信和行业发展具有重要价值。本文基于 2024年315平台线上投诉数据,采用数…...
uniapp APP权限弹框
效果图 第一步 新建一个页面,设置透明 {"path": "pages/permissionDisc/permissionDisc","style": {"navigationBarTitleText": "","navigationStyle": "custom","app-plus": {&…...
【Weaviate】数据库:向量存储与搜索的新纪元
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Weaviate 2、Weaviate 能做什么? …...
机器学习之激活函数
什么是激活函数 激活函数是神经网络的关键组件,作用于神经元输出。神经元汇总输入并计算净输入值,激活函数将其非线性变换,生成神经元最终输出,该输出作为后续神经元输入在网络中传播。 为什么需要激活函数 引入非线性 无激活…...
ACWing:178. 第K短路 (A*算法)
178. 第K短路 - AcWing题库 ac代码: #include<iostream> #include<cstring> #include<queue> using namespace std; const int N1010; const int M20020; struct node{int d,end,d1;bool operator <(const node &x)const{return d>x.d…...
Windows 图形显示驱动开发-WDDM 3.0功能- 硬件翻转队列(一)
WDDM 3.0 之前的翻转队列模型 许多新式显示控制器支持对按顺序显示的多个帧排队的能力。 从 WDDM 2.1 开始,OS 支持将在下一个 VSync 中显示的多个未完成的翻转覆盖请求。 显示微型端口驱动程序 (KMD) 通过 DXGK_DRIVERCAPS 中的 MaxQueuedMultiPlaneOverlayFlipVS…...
本地仓库设置
将代码仓库初始化为远程仓库,主要涉及在服务器上搭建 Git 服务,并将本地代码推送到服务器上。以下是详细的步骤: 1. 选择服务器 首先,你需要一台服务器作为代码托管的远程仓库。服务器可以是本地服务器、云服务器,甚…...
openEuler系统迁移 Docker 数据目录到 /home,解决Docker 临时文件占用大问题
根据错误信息 write /var/lib/docker/tmp/...: no space left on device,问题的根源是 根分区(/)的磁盘空间不足,而非 /home 分区的问题。以下是详细解释和解决方案: 问题原因分析 Docker 临时文件占用根分区空间&…...