嵌入式——C語言:指針①

一、指針特點

? ? ? ? 1.讓代碼更加簡潔高效

? ? ? ? 2.提供直接訪問內存的操作

? ? ? ? 3.利用指針可以直接操作硬件

二、指針概念

(一)地址:為了區分內存中不同字節的編號(0到2^16-1)

(二)指針:指針就是地址,地址就是指針,指針地址多了指向的概念

(三)指針變量:存放指針(地址)的變量(64位操作系統中所有指針變量均為8個字節

三、指針相關運算符

? ? ? ? 1.&:取地址運算符,獲得變量在內存空間中的首地址

? ? ? ? ? ? ? ? 1.1只有變量(左值(可以寫在等號左邊))才能&,常量和表達式不能進行&操作

????????????????1.2&構成的表達式為:變量在內存空間中的首地址

? ? ? ? ? ? ? ? ? ? ? ? int Num = 0;

? ? ? ? ? ? ? ? ? ? ? ? &Num:得到Num在內存空間4字節空間中的首地址

? ? ? ? ? ? ? ? 1.3&構成的表達式類型位:變量的類型升級后的類型

? ? ? ? ? ? ? ? ? ? ? ? int Num;

? ? ? ? ? ? ? ? ? ? ? ? &Num:int -> int *

? ? ? ? 2.*:獲得指針指向的空間,或者對應空間中的值

? ? ? ? ? ? ? ? 2.1*運算符連接的內容必須為指針類似,不能是普通變量類型

? ? ? ? ? ? ? ? 2.2如果直接使用*對應的表達式,表達式值為:該指針指向空間中的值

? ? ? ? ? ? ? ? ? ? ? ? *&Num;????????//獲取&Num指向的空間中int類型的值

? ? ? ? ? ? ? ? 2.3如果使用*對應的表達式其類型為:指針類型降級后的類型

? ? ? ? ? ? ? ? ? ? ? ? int *p;

? ? ? ? ? ? ? ? ? ? ? ? *p;//int * -> int

? ? ? ? ? ? ? ? 2.4*對應的表達式作為左值表示,將等號右邊的值放入指針指向的空間

四、指針變量的定義

? ? ? ? ? ? ? ? 不能使用未初始化的指針

(一)存儲類型 數據類型 *變量名

(二)野指針

? ? ? ? 定義:未經初始化的指針或者指向已經被釋放空間的指針

(三)空指針(NULL)

? ? ? ? 定義:指向內存空間為0x0的指針稱為空指針?

? ? ? ? ?內存地址0x0空間為只讀空間,不能復制,NULL指針不能執行*p = value操作

五、指針特性

? ? ? ? 變量的訪問形式

(一)直接訪問:通過變量的變量名訪問變量空間

(二)間接訪問:通過變量在內存中的地址訪問變量空間

六、指針的算術運算

(一)算術運算符

? ? ? ? 指針偏移的大小由指針指向的數據類型大小決定

? ? ? ? 兩個指針相減:兩個地址間相減數然后除數據類型

(二)不同指針類型之間的區別

? ? ? ? 1.*操作時處理方式不同

? ? ? ? 2.算數運算

六、指針常見操作

? ? ? ? 注意:指針有兩個需要請注意的概念:指針變量的本身,指針指向的空間。

? ? ? ? ? ? ? ? 1.對指針變量:p或者q修改,改變的是指針的指向

? ? ? ? ? ? ? ? 2.對*p或者*q:改變的是指針指向的空間,但是它的指向是不變的

七、指針作為函數參數

(一)值傳遞

? ? ? ? 1.實參將值傳給形參,形參值改變

? ? ? ? 2.函數體內部想使用函數體外部變量值的時候,使用值傳遞

(二)地址傳遞

? ? ? ? 1.實參將地址傳遞給形參,形參是指向實參的指針,可以利用形參修改實參的值

? ? ? ? 2.函數體內部想修改函數體外部變量的值的時候,使用地址傳遞

八、練習

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916327.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916327.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916327.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RabbitMQ—HAProxy負載均衡

上篇文章: RabbitMQ—仲裁隊列https://blog.csdn.net/sniper_fandc/article/details/149312579?fromshareblogdetail&sharetypeblogdetail&sharerId149312579&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 HAProxy安裝…

QT中啟用VIM后粘貼復制快捷鍵失效

當在QT中啟用FakeVim之后,Ctrl C 和 Ctrl V 快捷鍵就變成 Vim 的快捷鍵了,我希望它還是原來的復制粘貼功能,打開:編輯 > Preferences…,然后勾選 “Pass control keys”即可,如下:

TCP三次握手與四次揮手全解析

🌊 TCP三次握手與四次揮手全解析(含序列號動態追蹤)🔑 TCP 協議核心機制 序列號 (seq):數據字節流的唯一標識(32位循環計數器)確認號 (ack):期望接收的下一個序列號(ack …

7月26號打卡

作業:題目1:計算圓的面積 任務: 編寫一個名為 calculate_circle_area 的函數,該函數接收圓的半徑 radius 作為參數,并返回圓的面積。圓的面積 π * radius (可以使用 math.pi 作為 π 的值)要求:函數接收一…

C++/CLI與標準C++的語法差異(一)

🌌 C/CLI與標準C的語法差異(一)🔬 第一章:類型系統革命 - 徹底解構三語言范式 🧪 1.1 類型聲明語義差異矩陣 #mermaid-svg-L5kQ3iy05pKo4vIj {font-family:"trebuchet ms",verdana,arial,sans-se…

輸電線路微氣象在線監測裝置:保障電網安全的科技屏障

在電力傳輸網絡中,輸電線路微氣象在線監測裝置通過集成專業傳感器與智能分析技術,實現對線路周邊環境參數的實時采集與動態分析,為電網運行安全提供數據支撐。該設備針對輸電線路特殊工況設計,具備高適應性、高可靠性特點。工作原…

基于springboot的圖書借閱系統

用戶:借閱信息管理,續借信息管理,還書信息管理,圖書信息,系統公告,留言板,我的中心管理員:圖書信息管理,圖書類型管理,借閱信息管理,續借信息管理…

Xinference vs SGLang:詳細對比分析

概述對比特性XinferenceSGLang定位通用AI模型推理平臺高性能LLM服務框架專注領域多模態模型統一接口LLM推理性能優化設計理念易用性和兼容性性能和效率核心架構對比 Xinference 架構特點 Xinference 架構: ├── API層(REST/CLI/Python) ├─…

雙非上岸985!專業課140分經驗!信號與系統考研專業課140+上岸中南大學,通信考研小馬哥

一.經驗分享個人情況:初試總分377,政治59,英語二75、數學二103、專業課140。本科為湖南一所雙非一本,專業是電子信息工程,本科成績一般,無獎學金無評優無科研競賽,屬于三無人員&…

配置DNS正反向解析

服務端master配置:yum install bind -y配置靜態ip:修改配置文件:主:區域:正向解析:反向解析:開啟服務:客戶端node1配置:yum install nginx -y配置靜態ip:使用xftp將文…

MyBatis-Plus 通用 Service

引言 在開發 Java Web 應用程序時,我們經常需要進行大量的數據庫操作,如創建、讀取、更新和刪除(CRUD)。MyBatis-Plus 作為一個強大的 MyBatis 增強工具,為我們提供了通用 Service 接口,極大地簡化了這些操…

聚類-一種無監督分類算法

目錄 1、聚類任務 2、性能度量 (1)外部指標 (2)內部指標 3、具體聚類方法 (1)原型聚類 (2)密度聚類 (3)層次聚類 “無監督學習”(unsupervised learnin…

ES6 標簽模板:前端框架的靈活利器

ES6(ECMAScript 2015)引入的模板字符串(Template Literals)為 JavaScript 開發者提供了更簡潔的字符串處理方式,而模板字符串標簽(Tagged Template Literals)則進一步擴展了其功能性。通過標簽函…

解鎖編程核心能力:深入淺出數據結構和算法

——為什么它們是你代碼效率的終極武器? 🌟 引言:程序世界的基石 想象你正在建造摩天大樓:數據結構是鋼筋骨架,決定建筑的結構與承重能力;算法則是施工藍圖,指導如何高效完成建造。兩者結合&am…

Jenkins運行pytest時指令失效的原因以及解決辦法

錯誤收集 Started by user 偷走晚霞的人 Running as SYSTEM Building in workspace C:\Users\Administrator\.jenkins\workspace\TestAAA [TestAAA] $ cmd /c call C:\Users\Administrator\AppData\Local\Temp\jenkins5821160869728612887.bat C:\Users\Administrator\.jenkins…

MySQL數據庫本地遷移到云端完整教程

一、準備工作 安裝MySQL客戶端工具獲取云端數據庫連接信息: 主機地址端口號用戶名密碼數據庫名二、本地數據庫導出 mysqldump -h 127.0.0.1 -P 4406 -u root -p 數據庫名 > backup.sql執行后會提示輸入密碼,完成后會在當前目錄生成backup.sql文件 三、…

InvokeRepeating避免嵌套調用

InvokeRepeating嵌套這會導致指數級增長的重復調用堆疊。使用單一協程PeriodicActionRoutine替代所有InvokeRepeating避免方法間相互調用造成的堆疊如果需要多層級時間控制(如主循環子循環):IEnumerator MultiLevelTimer() {float mainInterv…

【工具】好用的瀏覽器AI助手

🧨 一、什么是 Sider? Sider 是一個 Chrome 瀏覽器插件,你可以把它看作一個「網頁邊上的 AI 小助手」。 🗣? 它就像你網頁旁邊的 AI 機器人,可以幫你回答問題、總結文章、翻譯、寫文案、改寫內容、甚至幫你學習英文&…

C++:list(2)list的模擬實現

list的模擬實現一.list與vector1.底層結構的本質區別2.模擬實現的核心差異2.1數據存儲的方式2.2 初始化的過程2.3 插入元素的操作2.4 刪除元素的操作2.5 訪問元素的效率3.總結二.頭文件list.h1. **命名空間與模板**2. **核心數據結構**3. **構造函數**4. **模板參數設計**5. **…

【595驅動8*8點陣】2022-9-11

緣由LED點陣屏只能一次亮一列-嵌入式-CSDN問答 #include "REG52.h" sbit dsP1^0;//數據線 595的14腳 sbit shP1^1;//數據輸入時鐘線 595的11腳 sbit stP1^2;//輸出存儲器鎖存時鐘線 595的12腳 void QuDong595(unsigned char sj) {unsigned char aa8;while(aa--){ds…