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

数组指针和指针的区别

区分数组指针和指针数组

int *p[3]和 int (*p)[3]

根据运算符的优先级,"[]"的优先级是高于“*”的,p就会先与[]结合,那么它本质就是数组,数组内存放的是指针,它叫指针数组。(int*p[3])。

因为括号优先级较高,p就先和“*”结合,那么它本质上就是指针,叫数组指针,存放的是数组的地址。既然本质是指针,那么它在32位系统里始终占4个字节,就是单纯的一个数组的地址。

(int(*p)[3])。

数组指针

数组指针是一个指向数组的指针。它可以用来访问整个数组,尤其是当我们希望传递数组到函数时。

定义

int arr[5] = {1, 2, 3, 4, 5};  
int (*ptr)[5] = &arr;  // ptr是指向一个包含5个整数的数组的指针

使用方法

#include <iostream>  void printArray(int (*p)[5]) {  // 参数是指向一个包含5个整数的数组的指针  for (int i = 0; i < 5; ++i) {  std::cout << (*p)[i] << " ";  // 通过解引用访问数组元素  }  std::cout << std::endl;  
}  int main() {  int arr[5] = {1, 2, 3, 4, 5};  printArray(&arr);  // 传递数组的地址  return 0;  
}

数组指针也称行指针,也就是说,当指针p执行p+1时,指针会指向数组的下一行,

如: 

int a[3][4];
int (*p)[4];	//p是一个数组指针,指向了一个包含4个int型元素的数组
p=a;			//将二维数组的首地址赋给p,即a[0]或a[0][0]
p++;			//跨过第一行,p指向了a[1][0]

指针数组

指针数组是一个数组,其中每个元素都是一个指针。它可以用来存储多个指针,这些指针可以指向不同的数据类型或对象

定义

int* ptrs[5];  // ptrs是一个包含5个指向整数的指针的数组

使用方法

#include <iostream>  int main() {  int a = 10, b = 20, c = 30;  int* ptrs[3];  // 指针数组  ptrs[0] = &a;  // 指针指向不同的变量  ptrs[1] = &b;  ptrs[2] = &c;  for (int i = 0; i < 3; ++i) {  std::cout << *ptrs[i] << " ";  // 解引用指针数组访问值  }  std::cout << std::endl;  return 0;  
}

指针数组是一个包含若干个指针的数组,p是数组名,当执行p+1时,则p会指向数组中的下一个元素。

如:

int a[3][4];
int *p[3];		//定义了一个数组,该数组中有3个int*指针变量,分别为p[0]、p[1]、p[2]
//p++;			//若执行此语句,则数组p指向下一个数组元素
for(int i=0;i<3;i++){p[i]=a[i];	//数组p中有3个指针,分别指向二维数组a的每一行
}

总结

数组指针是指向数组的指针,通常用于处理数组作为一个整体,特别是在函数参数中传递整个数组。

指针数组是由指针组成的数组,它可以存储多个独立的指针,可以指向不同的内存位置。

相关文章:

数组指针和指针的区别

区分数组指针和指针数组 int *p[3]和 int (*p)[3] 根据运算符的优先级&#xff0c;"[]"的优先级是高于“*”的&#xff0c;p就会先与[]结合&#xff0c;那么它本质就是数组&#xff0c;数组内存放的是指针&#xff0c;它叫指针数组。&#xff08;int*p[3]&#xff…...

Linux git-bash配置

参考资料 命令提示符Windows下的Git Bash配置&#xff0c;提升你的终端操作体验WindowsTerminal添加git-bash 目录 一. git-bash配置1.1 解决中文乱码1.2 修改命令提示符 二. WindowsTerminal配置git-bash2.1 添加git-bash到WindowsTerminal2.2 解决删除时窗口闪烁问题 三. VS…...

【后端速成Vue】computed计算属性

前言&#xff1a; 本期将会介绍 Vue 中的计算属性&#xff0c;他和 methods 方法又会有什么区别呢&#xff1f;在这里都会给你一一讲解。 篮球哥找工作专属IT岗位内部推荐&#xff1a; 专属内推链接&#xff1a;内推通道 1、computed计算属性 概念&#xff1a; 基于现有的数据…...

力扣-每日温度

. - 力扣&#xff08;LeetCode&#xff09; 这是我的第一个思路 虽然可以得到正确答案 但是过于暴力 已经超出了时间限制 class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {vector<int>ans;for (int i 0; i <…...

(Go语言)初上手Go?本篇文章帮拿捏Go的数据类型!

1. bool 类型 布尔类型&#xff1a;只有 true 和 false 两种值 在Go中&#xff0c;整数 0 不代表 false 值&#xff0c;1也不代表 true 值 即数字无法代替布尔值进行逻辑判断&#xff0c;两者是完全不同的类型 布尔类型占用 1 字节 2. int 整型 Go中为不同位数的整数分配…...

支付宝域名如何加入白名单(扫码老是弹窗)

支付宝扫码之后,遇到非支付宝官方网页,请确认是否继续访问弹窗,问题解决办法。 本章教程提供解决办法,亲测有效。 一、打开支付宝开放平台 登录地址:https://open.alipay.com/ 然后进行扫码登录。 1、打开网页/移动应用开发 2、前往创建 3、创建应用...

嵌入式学习第21天Linux基础

目录 第1章 Linux 系统介绍 1.1 Unix 操作系统&#xff08;了解&#xff09; 1.2 Linux 操作系统&#xff08;了解&#xff09; 1.3 Linux 操作系统的主要特性&#xff08;重点&#xff09; 1.4 Linux 与 Unix 的区别与联系 1.5 GUN 与 GPL&#xff08;了解&#xff09; …...

【activiti工作流源码集成】springboot+activiti+mysql+vue+redis工作流审批流集成整合业务绑定表单流程图会签驳回

工作流集成实际项目案例&#xff0c;demo提供 源码获取方式&#xff1a;本文末个人名片直接获取。 前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;请假审批demo从流程绘制到审批结束实例。 一、项目形式 springbootvue…...

华为私有接口类型hybrid

华为私有接口类型hybrid Tip&#xff1a;hybrid类型&#xff0c;简称混合型接口。 本次实验模拟2层网络下 vlan10 vlan20 不能互访&#xff0c;vlan10 vlan20 同时可以访问vlan100 sw1配置如下&#xff1a; <Huawei>sy [Huawei]sys sw1 [sw1]vl ba 10 20 100 [sw1]int…...

计算机的错误计算(一百五十)

摘要 探讨 MATLAB 中 的计算精度问题。当 为含有小数的大数或 &#xff08;&#xff09;附近数时&#xff0c;输出会有错误数字。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 -0.7882256119904400e0、0.1702266977524110e0、-0.…...

【模块化大作战】Webpack如何搞定CommonJS与ES6混战(3)

在前端开发中&#xff0c;模块化是一个重要的概念&#xff0c;不同的模块化标准有不同的特点和适用场景。webpack 同时支持 CommonJS 和 ES6 Module&#xff0c;因此需要理解它们在互操作时 webpack 是如何处理的。 同模块化标准 如果导出和导入使用的是同一种模块化标准&…...

工程认证与Spring Boot:计算机课程管理的新探索

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足&#xff0c;创建了一个计算机管理基于工程教育认…...

vue3的自定义hooks怎么写?

写个hook函数去追踪鼠标位置&#xff1a; 没用hook前&#xff1a; <script setup> import { ref, onMounted, onUnmounted } from vueconst x ref(0) const y ref(0)function update(event) {x.value event.pageXy.value event.pageY }onMounted(() > window.ad…...

SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0

springboot项目在编译时报错&#xff1a; /Users/Apple/Developer/art/caicai/cai-api/dubbo-samples/1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-provider/src/main/java/org/apache/dubbo/springboot/demo/provider/ProviderApplication.java:22:32 java…...

【网络】应用层——HTTP协议

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是HTTP协议。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;网络 &g…...

ServletContext介绍

文章目录 1、ServletContext对象介绍1_方法介绍2_用例分析 2、ServletContainerInitializer1_整体结构2_工作原理3_使用案例 3、Spring案例源码分析1_注册DispatcherServlet2_注册配置类3_SpringServletContainerInitializer 4_总结 ServletContext 表示上下文对象&#xff0c;…...

让AI帮我用java实现EasyExel读取图片—支持WPS嵌入图片

&#x1f308; 场景概述 java 小伙伴相信都使用 EasyExcel 以及 POI 库实现过 Excel 批量导入、导出功能&#xff0c;但只有部分人实现过 excel 导入带图片数据的场景。这个技术实现手段网上也有很多案例和demo&#xff0c;最常见的就是通过 XSSFPictureData 来实现。但是在 W…...

C# 实现对指定句柄的窗口进行键盘输入的实现

在C#中实现对指定句柄的窗口进行键盘操作&#xff0c;可以通过多种方式来实现。以下是一篇详细的指南&#xff0c;介绍如何在C#中实现这一功能。 1. 使用Windows API函数 在C#中&#xff0c;我们可以通过P/Invoke调用Windows API来实现对指定窗口的键盘操作。以下是一些关键的…...

深度学习之卷积问题

1 卷积在图像中有什么直观作用 ​ 在卷积神经网络中&#xff0c;卷积常用来提取图像的特征&#xff0c;但不同层次的卷积操作提取到的特征类型是不相同的&#xff0c;特征类型粗分如表1所示。 ​ 表1 卷积提取的特征类型 卷积层次特征类型浅层卷积边缘特征中层卷积局部特征深…...

yum安装zabbix5.0升级php到74的办法

【背景】 公司时不时有扫描漏洞,之前发现了php漏洞,因开启防火墙,限定IP+端口,暂时躲过升级;现在,老话重提,开启了KPI考核,躲是躲不过去的了,升级吧 【难题】 服务器为centos7,因操作系统问题,只能安装zabbix5.0。当时图省力,官网的办法,都是yum安装,很是简便。…...

Azure OpenAI代理层:无缝兼容官方API,平滑迁移与统一管理

1. 项目概述&#xff1a;一个为Azure OpenAI服务量身打造的代理层如果你正在使用微软Azure平台上的OpenAI服务&#xff0c;比如GPT-4、GPT-3.5-Turbo或者Embeddings模型&#xff0c;并且遇到了API格式不兼容、部署环境限制或者想统一管理多个终端的麻烦&#xff0c;那么diemus/…...

从学生到工程师:我如何用大学单片机课设代码搞定第一个嵌入式项目(STM8实战)

从学生到工程师&#xff1a;STM8实战中如何将课设代码升级为工业级解决方案 记得大三那年&#xff0c;我第一次在实验室里点亮STM8开发板的LED时&#xff0c;那种成就感至今难忘。但当我真正进入企业参与嵌入式项目开发时&#xff0c;才发现学校里的"标准答案"在真实…...

OpenClaw Gateway智能守护者:双触发自愈与AI诊断实践

1. 项目概述&#xff1a;一个为OpenClaw Gateway设计的智能守护者如果你在运维一个基于OpenClaw Gateway的服务&#xff0c;大概率经历过这样的深夜惊魂&#xff1a;手机突然收到告警&#xff0c;提示网关服务挂了&#xff0c;然后你不得不从床上爬起来&#xff0c;摸黑打开电脑…...

VS Code 高效开发:从 launch.json 变量替换到 task.json 自动化构建

1. 从零开始配置 VS Code 调试环境 第一次打开 VS Code 的调试面板时&#xff0c;很多开发者都会感到无从下手。其实配置调试环境并不复杂&#xff0c;关键是要理解 launch.json 文件的作用。这个文件就像是调试器的"说明书"&#xff0c;告诉 VS Code 如何启动和连接…...

PowerToys中文汉化终极指南:3步快速实现Windows效率工具完全本地化

PowerToys中文汉化终极指南&#xff1a;3步快速实现Windows效率工具完全本地化 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 你是否曾因PowerToys的英文…...

限时开放:ChatGPT Slogan生成专业版Prompt集(含金融/快消/科技三大垂直领域加密模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT Slogan生成的核心原理与边界认知 ChatGPT 生成 slogan 的本质并非“创意发明”&#xff0c;而是基于大规模语料统计规律的条件概率采样。其输出受限于训练数据分布、指令微调策略&#xff08;如…...

手把手教你:在无外网环境下搞定VSCode插件离线安装(附下载地址拼接技巧)

企业内网开发环境高效配置指南&#xff1a;VSCode插件离线部署实战 在高度安全管控的企业研发环境中&#xff0c;外网隔离是常见的安全策略。当新入职的工程师第一次打开内网电脑上的VSCode时&#xff0c;面对空空如也的插件市场&#xff0c;那种无从下手的焦虑感我深有体会。三…...

QtScrcpy安卓投屏终极指南:从零基础到精通应用的完整教程

QtScrcpy安卓投屏终极指南&#xff1a;从零基础到精通应用的完整教程 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrc…...

基于SimpleX协议构建私有AI通信通道:OpenClaw插件部署指南

1. 项目概述&#xff1a;构建一个无需公共机器人账户的私有AI通信通道在构建AI助手或自动化工作流时&#xff0c;我们常常面临一个两难选择&#xff1a;要么依赖大型平台的机器人API&#xff08;如Telegram Bot、Slack App&#xff09;&#xff0c;这意味着你的通信路径、用户数…...

双系统‘分手’指南:在UEFI模式下彻底卸载Ubuntu并回收磁盘空间(附EasyUEFI使用详解)

双系统卸载全攻略&#xff1a;安全移除Ubuntu并回收磁盘空间的终极指南 你是否曾经为了体验Linux而在Windows电脑上安装了Ubuntu双系统&#xff0c;现在却想回归单一操作系统&#xff1f;面对复杂的UEFI引导和磁盘分区&#xff0c;很多人担心操作不当会导致系统崩溃或数据丢失。…...