在C语言中,int()[5]和int是两种完全不同的指针类型,理解它们的区别对于正确处理数组和多维数组至关重要。下面详细解释:

1:int*(指向整型的指针)

  • 含义:指向单个int类型数据的指针
  • 典型用法:
int a = 10;
int* p = &a; // p指向一个int变量
  • 与一维数组的关系:
int arr[5] = {1, 2, 3, 4, 5};
int* p = arr; // arr自动转换为&arr[0],类型是int*

2:int(*)[5](指向数组的指针)

  • 含义:指向一个“包含5个int元素的数组”的指针,而非指向单个int
  • 典型用法:
int arr[5] = {1, 2, 3, 4, 5};
int (*p_to_array)[5] = &arr; // p_to_array指向整个数组
  • 关键区别:
    1:p_to_array的类型是int()[5],表示“指向一个长度为5的int数组的指针”
    2:对p_to_array解引用(p_to_array)会得到整个数组(类型是int[5]),而p_to_array又会自动退化为int
    (指向数组首元素)

3: 为什么&arr的类型是int(*)[5]?

  • arr是一个长度为5的int数组,&arr表示“取整个数组的地址”,因此类型是指向数组的指针(int(*)[5])

  • 这与&arr[0](类型是int*)不同:

printf("%p\n", &arr);    // 类型:int(*)[5],指向整个数组
printf("%p\n", &arr[0]); // 类型:int*,指向首元素
  • 虽然两者的内存地址值相同,但指针类型不同,导致指针运算的行为不同(见下文)。

4: 类型差异导致的指针运算区别

  • int*的算术以int为单位:
int* p = arr;
p++; // 移动sizeof(int)字节(如4字节),指向arr[1]
  • int(*)[5]的算术以“整个数组”为单位:
int (*p_to_array)[5] = &arr;
p_to_array++; // 移动sizeof(int[5])字节(如20字节),指向“下一个长度为5的数组”
  • 如果arr是单独定义的数组,p_to_array++会越界(因为不存在下一个数组)

5:例子1

在这里插入图片描述

6:例子2,输出结果是相同的

    int arr[5] = {1, 2, 3, 4, 5};int (*p_to_array)[5] = &arr; // p_to_array指向整个数组printf("%d\n", (*p_to_array)[2]);int arr2[5] = {1, 2, 3, 4, 5};int *p_to_array2 = &arr2; // p_to_array2指向整个数组printf("%d\n", *(p_to_array2+2));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87316.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87316.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87316.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 NestJS 中优雅使用 TypeORM 进行事务管理

事务管理是数据库操作中至关重要的部分,它能确保一系列操作要么全部成功,要么全部失败。本文将详细介绍在 NestJS 框架中使用 TypeORM 进行事务管理的多种方法。 为什么需要事务管理? 想象一下银行转账场景:从一个账户扣款后&am…

给任意apk内容添加水印

1 有源码给app添加水印 使用java可以适配更多的apk,如果使用koltin一些老的apk就会有适配问题 通过registerActivityLifecycleCallbacks拿到activity对象设置水印 在application里面registerActivityLifecycleCallbacks就行 static class MyActivityLifecycleCallb…

扩展的Fortran在高性能计算(HPC)中助力有限元分析(FEA)、流体力学(CFD)、结构力学、复合材料和增材制造仿真的详细指南【附完整示例代码实现】

Fortran 在高性能计算(HPC)中的仿真应用 本指南深入探讨 Fortran 语言如何在高性能计算(HPC)中助力有限元分析(FEA)、流体力学(CFD)、结构力学、复合材料和增材制造仿真。每部分详细介绍,分析 Fortran 的优势、应用场景和实现细节,并附带完整的 Fortran 模拟代码(含…

Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的跨语言信息检索与知识融合(331)

Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的跨语言信息检索与知识融合(331) 引言:正文:一、Java 驱动的多语言数据处理平台1.1 分布式多语言语料智能清洗系统1.2 多语言文本分布式存储与索引优化1.3 低资源语言数据…

[2025CVPR]SEEN-DA:基于语义熵引导的领域感知注意力机制

目录 引言 研究背景 方法介绍 核心思想 语义熵(Semantic Entropy) 语义熵引导的注意力机制 领域感知注意力模块 实验设计 数据集 实现细节 结果与分析 对比实验结果 消融实验 代码实现 结论 引言 领域自适应目标检测(Domain …

你的RAG系统安全么?

生成式人工智能(GenAI)近年来发展迅速,大语言模型成为这一浪潮的核心力量。无论是商业还是开源模型,它们都具备强大的语言理解与生成能力,正广泛应用于内容创作、聊天机器人等场景,让企业更容易落地智能应用…

【2.3 漫画SpringSecurity - 守护应用安全的钢铁卫士】

🔐 漫画SpringSecurity - 守护应用安全的钢铁卫士 📚 目录 记忆口诀可视化图表形象比喻数字记忆实战案例记忆卡片总结诗句面试准备🎪 记忆口诀 🏗️ SpringSecurity核心 - “认证授权过滤链” 认证Authentication确身份,用户名密码验证真 授权Authorization控权限,…

ModbusRTU转Profinet网关在电子天平与PLC系统集成中的应用

ModbusRTU转Profinet网关在电子天平与PLC系统集成中的应用 工业自动化场景中,设备通信协议差异常成为系统集成的隐形壁垒。某精密制造企业近期遇到的奥豪斯电子天平与西门子PLC通讯难题,正是这一矛盾的典型缩影。奥豪斯天平采用ModbusRTU协议&#xff0…

js代码后续

这是一个非常棒的问题,也是每个学完一个系统课程的人都会问的问题。 答案是:不,你没有学完“所有”的 JavaScript 知识,但你已经出色地完成了成为一名合格 JavaScript 开发者的所有“必修课”。 让我用一个比喻来解释&#xff1…

百度文心大模型 4.5 系列全面开源 英特尔同步支持端侧部署

2025 年 6 月 30 日,百度如期兑现 2 月 14 日的预告,正式开源文心大模型 4.5(ERNIE 4.5)系列,涵盖 10 款不同参数规模的模型,包括 470 亿参数混合专家(MoE)模型、30 亿参数 MoE 模型…

Google AI Edge Function Calling: Android 端模型也能调用工具函数

大家好,我是拭心。 上篇文章我们了解了如何在 Android 手机上实现 RAG。这篇文章我们来聊聊端上大模型应用开发的核心概念:Function Calling(函数调用能力,简写为 FC)。 Function Calling 本质上是让大模型在回答过程…

模型调试实用技巧 (Pytorch Lightning)

【PL 基础】模型调试实用技巧 摘要1. 设置断点2. 快速运行所有模型代码一次3. 缩短 epoch 长度4. 运行健全性检查5. 打印 LightningModule 权重摘要6. 打印输入输出层尺寸 摘要 本文总结了6种实用的模型调试技巧:1)通过设置断点逐行检查代码;…

计算机网络(四)网际层IP

目录 一、概念 ​编辑 二、网际层和数据链路层的关系​ 三、IP地址的基础认识 四、IP地址的分类 五、无分类地址CIDR 六、子网掩码 七、为什么要分离网络号和主机号 八、公有IP和私有IP ​编辑 九、IP地址与路由控制 十、IP分片和重组 十一、IPv6 十二、IP协议…

Java--多态--向上转型--动态绑定机制--断点调试--向下转型

目录 1. 向上转型 2. 向下转型 3. java的动态绑定机制: 4. Object类讲解 5. 断点调试 1. 向上转型 提前:俩个对象(类)存在继承关系 本质:父类的引用指向了子类的对象 语法:父类 类型 引用名 new…

Python爬虫实战:研究urllib 库相关技术

1. 引言 1.1 研究背景与意义 互联网每天产生海量数据,如何高效获取和利用这些数据成为重要研究方向。网页爬虫作为自动获取网络信息的核心技术,在市场调研、舆情分析、学术研究等领域具有广泛应用。Python 凭借其简洁语法和丰富库支持,成为爬虫开发的首选语言。 1.2 相关…

【机器学习赋能的智能光子学器件系统研究与应用】

目前在Nature和Science杂志上发表的机器学习与光子学结合的研究主要集中在以下几个方面: 1.光子器件的逆向设计:通过机器学习,特别是深度学习,可以高效地进行光子器件的逆向设计,这在传统的多参数优化问题中尤为重要。…

Codeforces Round 1034 (Div. 3)

比赛链接如下:https://codeforces.com/contest/2123 A. Blackboard Game Initially, the integers from 00 to n−1 are written on a blackboard. In one round, Alice chooses an integer a on the blackboard and erases it;then Bob chooses an integer b on …

微电网系列之微电网的孤岛运行

个人主页:云纳星辰怀自在 座右铭:“所谓坚持,就是觉得还有希望!” 微电网的孤岛运行 微电网具有并网和孤岛两种运行模式,由于孤岛运行模式下,分布式电源为微电网内部负荷提供频率和电压支撑,由…

JsonCpp的核心类及核心函数使用汇总

文章目录 JsonCpp的核心类及核心函数使用汇总一、前言二、JsonCpp 核心类介绍三、Value 类函数解析1. 值获取函数(asxxx 系列 )2. 值类型判断函数(isxxx 系列 )3. 数组操作函数4. 对象操作函数5. 运算符重载6. 迭代器7. JSON 转化…

Qt写入excel

1.tableView导出到excel 点击导出函数按钮、发送sendMessage信号(信号名称,对象,数据) void HydroelectricPowerPluginImpl::exportTableViewSelectedRows(QTableView* tableView, QWidget* parent) {if (!tableView || !tableVie…