C 語言指針與作用域詳解

一、指針基礎概念

(一)指針的本質

指針是 C 語言中一個重要的概念,其本質是內存地址。在計算機內存中,每個字節都有唯一的編號,這個編號就是我們所說的內存地址,而指針變量就是用于存儲這些內存地址的變量。

(二)指針的聲明語法

基本數據類型* 標識符(=初始化);

  • 習慣上,指針變量名會以p開頭,例如:int* p;表示聲明一個指向整型數據的指針變量p
  • 指針變量的類型必須與它所指向的數據類型一致,這樣才能正確地訪問和操作對應內存空間的數據

(三)指針的內存大小

指針變量本身在內存中所占的空間大小取決于計算機的架構:

  • 在 x86 架構(32 位系統)中,指針占4 字節
  • 在 x64 架構(64 位系統)中,指針占8 字節

(四)特殊符號&的多重含義

  • 在指針中:代表取地址操作符,用于獲取變量的內存地址,例如&a表示獲取變量a的地址
  • 在引用中:代表引用聲明,用于定義變量的別名
  • 按位與操作:對兩個操作數進行按位與運算
  • 邏輯與操作(&&):用于邏輯表達式中,進行聯言判斷

(五)解引用操作

解引用操作是通過指針訪問其所指向的內存單元中存儲的值,形象地說就像 “偷家”—— 根據地址找到里面的東西。

  • 語法:*地址
  • 示例:若p是一個指向整型變量a的指針,那么*p就表示訪問a的值

(六)特殊指針

  • 野指針:如同 “熊孩子”,是指向未定義或非法內存地址的指針。訪問野指針會導致程序崩潰或產生不可預知的結果,是編程中需要極力避免的問題
  • 空指針:指向空地址的指針,在 C 語言中通常用NULL0來表示。空指針是一個合法的指針值,用于表示指針不指向任何有效內存地址

二、作用域概念

(一)作用域的定義

作用域是程序中定義的變量、函數等實體可以被訪問的區域范圍。在 C 語言中,作用域主要由花括號{}來界定:

{ // begin// 這里定義的變量、函數等只在這個花括號內有效// 代表一個作用域(在里面才有作用)
} // end 位置

(二)作用域的重要性

  • 作用域決定了標識符的可見性和生命周期
  • 在一個作用域內定義的變量,只能在該作用域及其嵌套的子作用域中訪問
  • 當程序執行離開某個作用域時,該作用域內定義的自動變量會被銷毀,內存空間被釋放

合理理解和運用指針與作用域的概念,是掌握 C 語言編程的關鍵基礎,有助于編寫更高效、更安全的代碼。在實際編程中,要特別注意避免野指針問題,合理規劃變量的作用域,確保程序的穩定性和可靠性。

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

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

相關文章

解鎖阿里云ACK:開啟Kubernetes容器化應用新時代

引言:云原生時代下的 ACK 在當今數字化飛速發展的時代,云原生技術正以前所未有的速度改變著軟件開發和部署的格局。隨著企業對應用敏捷性、彈性擴展以及成本優化的需求日益增長,云原生已成為眾多企業實現數字化轉型的關鍵路徑。在云原生的技…

【C++基礎】內存管理四重奏:malloc/free vs new/delete - 面試高頻考點與真題解析

在 C/C 編程中,內存管理是核心基礎技能,而malloc/free和new/delete作為兩套內存分配釋放機制,是面試中高頻出現的考點。 一、內存管理的 "雙生花":基礎概念解析 1.1 malloc/free:C 語言的內存管家 malloc全…

Dify+Ollama+QwQ:3步本地部署,開啟AI搜索新篇章

如何來評價本地化部署的價值與優勢分析: 成本優化與隱私保障 自定義搜索插件,告別信息過載 一鍵生成報告、分析,效率翻倍! 接下來我們就嘗試跟隨來部署本地的價值所在! 1:安裝Ollama & 部署QwQ模型 1.1 安裝O…

FAISS 簡介及其與 GPT 的對接(RAG)

什么是 FAISS? FAISS (Facebook AI Similarity Search) 是 Facebook AI 團隊開發的一個高效的相似性搜索和密集向量聚類的庫。它主要用于: 大規模向量相似性搜索高維向量最近鄰檢索向量聚類 https://github.com/facebookresearch/faissFAISS 特別適合處理…

【Apache Doris 深度實戰:從 MPP 架構到實時分析,解鎖三大數據模型的性能優化秘籍】

一、安裝部署 安裝教程:GitHub地址 Doc文檔:Apache Doris 簡介 - Apache Doris 二、功能及作用 Apache Doris 是一款基于MPP 架構的高性能、實時分析型數據庫。它以高效、簡單和統一的特性著稱,能夠在亞秒級的時間內返回海量數據的查詢結果…

MySQL主從復制與讀寫分離概述

前言: 在數據驅動的現代應用中,數據庫面臨高并發讀寫與海量存儲的雙重挑戰。單一數據庫實例在性能、可用性及擴展性上逐漸成為瓶頸。MySQL主從復制(Master-Slave Replication)與讀寫分離(Read/Write Splitting&#xf…

數據庫-元數據表

1. 什么是元數據表元數據:數據的數據,用以描述數據的信息也是數據,被稱為元數據2. 獲取元數據的方法MySQL提供了以下三種方法用于獲取數據庫對象的元數據:show語句從INFORMATION_SCHEMA數據庫里查詢相關表(information…

【STM32】通用定時器PWM

STM32 通用定時器 PWM 輸出完全解析(以 TIM3_CH1 為例) PWM 輸出基本原理 PWM(Pulse Width Modulation)即脈沖寬度調制,是由定時器通過比較 CNT 與 CCR 寄存器實現的。 信號產生原理: ARR 決定周期&#…

python學習打卡:DAY 21 常見的降維算法

知識點回顧: LDA線性判別PCA主成分分析t-sne降維 還有一些其他的降維方式,也就是最重要的詞向量的加工,我們未來再說 浙大疏錦行

基于SpringBoot和Leaflet集成在線天氣服務的區縣當前天氣WebGIS實戰

目錄 前言 一、需求描述 1、功能需求 2、技術實現流程 二、SpringBoot后臺實現 1、控制層實現 2、區縣數據返回 三、WebGIS前端實現 1、區位信息展示 2、天氣信息展示 四、成果展示 1、魔都上海 2、蜀地成都 3、湖南桂東 五、總結 前言 在當今數字化時…

文心開源:文心大模型4.5系列全面開放,AI普惠時代加速到來

一場由4240億參數模型領銜的開源盛宴,正在重塑中國AI生態的底層邏輯 2025年6月30日,百度如約宣布全面開源其旗艦產品——文心大模型4.5系列。一次性開源10款模型,覆蓋從4240億參數的MoE多模態巨無霸到輕巧的0.3B端側模型,并同步開…

【運算放大器專題】基礎篇

1.1 運算放大器是放大了個寂寞嗎?—初識運算放大器 為了解決震蕩問題,人為加了一些補償網絡之后導致的高頻特性差 1.2歐姆定律和獨立源 1正弦2方波3脈沖 電壓源是平行于i軸的橫線 1.3有伴源和運放緩沖器 有伴指的是有電阻,有伴是壞事&#…

英偉達 jetson nano 從NFS啟動,使用英偉達提供的rootfs根文件系統

0、目標 為了方便驅動階段的開發,并且使用英偉達提供的上層應用,這里希望使jetson nano 從NFS啟動,同時使用英偉達提供的rootfs根文件系統。 1、硬件準備 確保jetson nano 板子和開發主機之間使用網線進行連接(保持板子和開發主…

廣州華銳互動:以創新科技賦能教育,開啟沉浸式學習?

在教育領域,廣州華銳互動致力于打破傳統教學的局限性,為師生們帶來全新的沉浸式學習體驗。廣州華銳互動通過開發 VR 虛擬教學課件,將抽象的知識轉化為生動、逼真的虛擬場景,讓學生能夠身臨其境地感受知識的魅力 。比如在歷史課上&…

Grok 4 最新技術評測與發布指南

TL;DR:馬斯克跳過Grok 3.5直接發布Grok 4,計劃在7月4日后上線,專注編程模型優化,這次"極限迭代"能否讓馬斯克在AI軍備競賽中翻盤? 📋 文章目錄 🚀 Grok 4發布概況🏆 Grok…

為什么音視頻通話需要邊緣加速

? 主要原因 ? 降低傳輸延遲 用戶與邊緣節點之間通常1-2跳即可完成連接,避免跨國、跨運營商長鏈路傳輸 保障音視頻信令、媒體流快速到達,控制端到端延遲 ? 提升弱網環境下的連接穩定性 邊緣節點具備鏈路優化、丟包補償、轉發中繼功能 即使在WiFi切…

小架構step系列05:Springboot三種運行模式

1 概述 前面搭建工程的例子,運行的是一個桌面程序,并不是一個Web程序,在這篇中我們把它改為Web程序,同時從啟動角度看看它們的區別。 2 Web模式 2.1 桌面例子 回顧一下前面的例子,其pom.xml的配置如下:…

LoRaWAN的設備類型有哪幾種?

LoRaWAN(Long Range Wide Area Network)是一種專為物聯網(IoT)設備設計的低功耗、長距離通信協議。它根據設備的功能和功耗需求,將設備分為三種類型:Class A、Class B 和 Class C。每種設備類型都有其獨特的…

三維目標檢測|Iou3D 代碼解讀一

本文對OpenPCDet項目中的iou3d模塊中的iou3d_nms_kernel.cu代碼進行解讀,本次解決的函數是box_overlap,它的輸入是兩個包圍盒,輸出是兩個包圍盒在bev下的重疊面積,計算流程是 確定box_a和box_b的四個角落坐標 從包圍盒中提取坐標值…

探索實現C++ STL容器適配器:優先隊列priority_queue

前引: 在算法競賽中,選手們常常能在0.01秒內分出勝負;在實時交易系統中,毫秒級的延遲可能意味著數百萬的盈虧;在高并發服務器中,每秒需要處理數萬條不同優先級的請求——這些系統背后,都隱藏著同…