山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

引用一个数组元素,可以用下面两种方法:

( 1 )下标法,如a[i]形式;

( 2 )指针法,如* ( a + i )或* ( p + i )。其中a是数组名,p是指向数组元素的指针变量,其初值p = a。

例题:

有一个整型数组a,有10个元素,要求输出数组中的全部元素。

解题思路:

引用数组中各元素的值有3种方法:

编写程序:

( 1 )下标法

 运行结果:

 ( 2 )通过数组名计算数组元素地址,找出元素的值;

运行结果: 

与上面程序相同

程序分析:

( a + i )是a数组中序号为i的元素的地址,* ( a + i )是该元素的值。用& a[i]表示a[i]元素的地址,也可以改用( a + i )表示,即:

scanf (“% d”,a + i );

( 3 )用指针变量指向数组元素。

运行结果:

与(1)相同。

程序分析:

先使指针变量p指向a数组的首元素(序号为0的元素,即a [ 0)接着在输出* p,* p就是p当前指向的元素(即a [ 0 ])的值。然后执行p + +,使p指向下一个元素a [ 1 ],再输出* p,此时* p是a [ 1 ]的值,依此类推,直到p = a + 10,此时停止执行循环体。

第111,112可以改为

for ( p = a;p < a + 10 );p++ )

  scanf("%d",p);

用指针变量表示当前元素的地址。

3种方法的比较:

第(1 )和第(2 )种方法执行效率是相同的。C编译系统是将a [ i ]转换为* ( a + i )处理的,即先计算元素地址。因此用第(1 )和第(2 )种方法找数组元素费时较多。

第(3 )种方法比第(1 )、第(2)种方法快,用指针变量直接指向元素,不必每次都重新计算地址,像p ++这样的自加操作是比较快的。这种有规律地改变地址值( p++ )能大大提高执行效率。

用下标法比较直观,能直接知道是第几个元素。例如,a [ 5 ]是数组中序号为5的元素(注意序号从0算起)。用地址法或指针变量的方法不直观,难以很快地判断出当前处理的是哪一个元素。要仔细分析指针变量p的当前指向,才能判断当前输出的是第几个元素。有经验的专业人员往往喜欢用第(3 )种形式,用p + +进行控制,程序简洁、高效。第(1 )种形式,直观、不易出错。

注意:在使用指针变量指向数组元素时,有以下几个问题要注意:

( 1 )可以通过改变指针变量的值指向不同的元素。例如,上述第(3 )种方法是用指针变量p来指向元素,用p + +使p的值不断改变从而指向不同的元素。如果不用p变化的方法而用数组名a变化的方法(例如,用a ++)行不行呢?是不行的。因为数组名a代表数组首元素的地址,它是一个指针型常量,它的值在程序运行期间是固定不变的。既然a是常量,所以a + +是无法实现的。

( 2 )要注意指针变量的当前值。

 

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

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

相关文章

Guava LoadingCache

LoadingCache 是 Google Guava 库提供的一个高级缓存实现&#xff0c;它通过自动加载机制简化了缓存使用模式。核心特性自动加载机制当缓存未命中时&#xff0c;自动调用指定的 CacheLoader 加载数据线程安全&#xff1a;并发请求下&#xff0c;相同key只会加载一次灵活的过期策…

基于LSTM-GRU模型的黄金价格动态监测:关税政策与美指的量化关联研究

摘要&#xff1a;本文通过BERT-Large模型对关税政策进行语义解析&#xff0c;结合LSTM-GRU混合模型、DCC-GARCH动态相关性模型及蒙特卡洛情景分析&#xff0c;量化解析7月11日黄金价格异动背后的三大驱动因子——政策冲击、美元指数压制与美联储政策不确定性&#xff0c;提供AI…

V少JS基础班之第七弹

文章目录一、 前言二、本节涉及知识点三、重点内容1、prototype2、constructor3、中场回顾&总结4、__ proto__5、第二次中场回顾&总结6、原型链6、第三次中场回顾&总结7、原型链中的奇点一、 前言 第七弹内容是原型链。网络上原型链的资料很多。但是我看了很多篇&…

Nuxt3自动打包及自动修改端口号脚本

Nuxt3自动打包及自动修改端口号脚本技术文章大纲 背景与需求 Nuxt3作为现代Vue框架&#xff0c;开发中常需处理打包部署和端口配置问题。自动化脚本可提升效率&#xff0c;减少手动操作错误。 实现自动打包 利用Nuxt3内置命令结合Node.js脚本实现自动化构建。通过npm run build…

红海云国资案例之多层级工贸集团的一体化HR平台建设实战

在中国经济迈向高质量发展的进程中&#xff0c;国有企业作为重要的经济支柱和行业引领者&#xff0c;正面临着数字化转型的深刻变革。F集团作为G市首家实现工贸一体化运营的大型企业&#xff0c;位列中国轻工业百强&#xff0c;其在人力资源数字化转型中的探索和实践&#xff0…

TCP详解——流量控制、滑动窗口

目录 流量控制 滑动窗口 丢包重传 情况一&#xff1a;数据到达&#xff0c;应答丢失 情况二&#xff1a;数据包丢失 流量控制 TCP协议会根据接收端的缓冲区大小来调整发送速度&#xff0c;剩余空间多则发送速度快&#xff0c;否则降低发送速度 接收端将⾃⼰可以接收的缓…

C#高级特性面试问题的详细分析,涵盖核心概念、应用场景和最佳实践

序列化与反序列化 1. 什么是序列化和反序列化&#xff1f;用途是什么&#xff1f; // 序列化示例 Person person new Person { Name "Alice", Age 30 }; string json JsonSerializer.Serialize(person); // 序列化为JSON// 反序列化示例 Person deserialized Js…

【电脑】内存的基础知识

内存&#xff08;Memory&#xff09;是计算机中用于临时存储数据和程序的地方&#xff0c;它直接影响到系统的运行速度和性能。以下是关于内存的详细知识&#xff1a;1. 内存类型常见的内存类型包括以下几个主要种类&#xff1a;SDRAM (Synchronous Dynamic Random Access Memo…

Java---IDEA

IDEA概述 IDEA&#xff1a;全称Intellij IDEA&#xff0c;是用于Java语言开发的集成开发环境 集成环境&#xff1a;把代码编写&#xff0c;编译&#xff0c;运行&#xff0c;调试等多种功能综合到一起的开发工具 下载与安装 下载&#xff1a;IntelliJ IDEA – the IDE for …

【每日刷题】x 的平方根

69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;暴力 从0开始遍历&#xff0c;直到 ans*ans > x 为止&#xff0c;这时ans-1就是答案。需要注意可能会爆int&#xff0c;所以ans要开为long&#xff0c;最后再转换为int。 class Solution {publ…

C#元组:从基础到实战的全方位解析

C#元组&#xff1a;从基础到实战的全方位解析 在 C# 编程中&#xff0c;元组&#xff08;Tuple&#xff09;是一种轻量级的数据结构&#xff0c;用于临时存储多个不同类型的元素。无论是方法返回多个值、LINQ 查询中的临时投影&#xff0c;还是简化数据传递&#xff0c;元组都以…

Django母婴商城项目实践(二)

2、母婴商城项目环境配置 环境配置: Python3.12 解释器Pycharm Professional 2025.1 编辑器Django 4.2(或 Django 5.x)MySQL 8.0.28 数据库 1、Django框架 介绍 Django是一个高级的Python Web应用框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责…

Go语言的Channel通道的含义。区分缓冲通道和非缓冲通道,并讨论通道的发送、接收、关闭以及如何安全地从已关闭的通道读取数据。

非缓冲通道&#xff1a;非缓冲通道在确定时没有声明容量大小&#xff0c;发送和接收操作会同步阻塞&#xff0c;直到另一端准备好。发送方和接收方必须同时就绪才能完成数据交换&#xff0c;否则会阻塞。常用于goroutine之间的同步通信。缓冲通道&#xff1a;缓冲通道在确定时就…

tensor

&#x1f609;如果您想用jupyter notebook跑我的笔记&#xff0c;可以在下面获取ipynb版本 &#x1f60a;麻烦给个免费的star&#x1f618; ❤️主包也更建议这种形式&#xff0c;上面的笔记也更加全面&#xff0c;每一步都有直观的输出 文章目录&#x1f4da; PyTorch张量操作…

STM32-DAC数模转换

DAC数模转换&#xff1a;将数字信号转换成模拟信号特性&#xff1a;2个DAC转换器每个都拥有一个转换通道8位或12位单调输出&#xff08;8位右对齐&#xff1b;12位左对齐右对齐&#xff09;双ADC通道同时或者分别转换外部触发中断电压源控制部分&#xff08;外部触发3个APB1&am…

前后端集合如何传递

前端vue后端rest风格&#xff1a;1.路径传参&#xff08;参数必传&#xff09;&#xff0c;通过pathvarible注解后端&#xff1a;DeleteMapping("/{YYIDs}")public R<Void> remove(NotEmpty(message "主键不能为空")PathVariable String[] YYIDs) {…

1353. 最多可以参加的会议数目

1353. 最多可以参加的会议数目 题目链接&#xff1a;1353. 最多可以参加的会议数目 代码如下&#xff1a; class Solution { public:int maxEvents(vector<vector<int>>& events) {int mx 0;for (auto& e : events) {mx max(mx, e[1]); // 找到最大的结…

OCR 本地版本

UMI OCR 支持本地部署&#xff0c;支持HTTP OCR

大数据驱动的酒店用品需求预测模型研究 开发——毕业论文,毕业设计——仙盟创梦IDE

主页酒店用品 平台协议促销毕业论文摘要本研究旨在构建基于大数据分析的酒店用品需求预测模型&#xff0c;以提高酒店用品批发企业的库存管理效率和供应链响应速度。研究整合了酒店历史采购数据、季节因素、市场趋势、节假日信息等多源数据&#xff0c;通过对比传统时间序列模型…

Windows11桌面解锁守护脚本

使用python程序加bat一键运行脚本&#xff0c;妈妈再也不用担心我的电脑桌面了import os import time import cv2 import pyautogui import psutil from datetime import datetimeclass UnlockMonitor:def __init__(self):"""初始化监控器"""sel…