【時時三省】(C語言基礎)通過指針引用數組元素

山不在高,有仙則名。水不在深,有龍則靈。 ----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…