1、內(nèi)存地址
用戶在程序中定義了一個變量,對程序進行編譯時,系統(tǒng)就會給這個變量分配內(nèi)存單元,內(nèi)存區(qū)的每一個字節(jié)都有一個編號,這就是內(nèi)存地址,相當于旅館的房間號,內(nèi)存地址所表示的內(nèi)存單元中存放的數(shù)據(jù)就相當于這個房間住的旅客,假設內(nèi)存地址0x00000028中存放了一個字節(jié)的數(shù)據(jù)0x28,那么如果我找到了這個內(nèi)存地址,也就相當于我查到了這里面的數(shù)據(jù)0x28,可以說地址指向該變量的單元,因此,將地址稱為了指針,意思就是說通過它可以找到以它為地址的內(nèi)存單元。
2、指針變量與指針
一個變量存放的地址就稱為該變量的指針,如果有一個變量專門用來存放另一個變量的地址,那這個變量就稱為指針變量,指針變量的值是地址。
3、指針變量的定義:通常在變量名前面加一個“*”就代表這是一個指針變量,如下圖所示。
第9行和第10行都是定義了一個名為num的字符型指針變量,不過推薦使用第10行的定義方式,如果不進行地址初始化,就會成為所說的野指針(就是不知道指向哪個位置了)。
4、指針變量的賦值:指針變量的賦值如下圖所示。
首先定義了一個指針變量num,然后定義了一個變量a,并設置a的值為0xAA,現(xiàn)在將a的地址傳給num,這就有了第11行的語句,其中&代表取址,即獲取變量a所在的地址,此時可以將num指向的數(shù)據(jù)打印出來。
此時程序的運行結(jié)果如下圖所示。
顯然,此時指針變量指向的地址是007CF80B H,這個內(nèi)存單元中存放的數(shù)據(jù)為100,就是變量a的初始值。
5、指針變量的使用
現(xiàn)在來進行一個實驗,將變量a的值和變量b的值交換,程序如下圖所示。
程序運行結(jié)果如下圖所示。
現(xiàn)在思考這么一個問題,為什么交換兩個數(shù)據(jù)要使用指針的方式呢,定義全局變量不是也可以達到這個效果嗎?首先全局變量在編程的過程中要保證越少越好,因為全局變量的命名規(guī)則是不允許重復的,全局空間因為處于最頂層也是最大的命名空間里,所以變量名要保持獨立,不沖突,就需要更完整的表達它的含義,所以名字就會更傾向于寫的很長。全局變量數(shù)量越多,取名的難度就會更大,其次,有的時候全局變量太多會有一些莫名其妙的BUG,但是即想要少用全局變量,又要達到數(shù)據(jù)共享的目的要怎么辦。
這就有兩種途徑,一種是子函數(shù)的返回值,另一種就是指針,調(diào)用子函數(shù)的返回值會耗費掉一部分時間,這個時間在計算機編程中獲取可以忽略不計,但是在后續(xù)的單片機編程中就會格外顯眼,一般為了保證控制系統(tǒng)的實時性,一些重要的代碼都會放在中斷里執(zhí)行,此時,只需要用指針指向?qū)膬?nèi)存地址,需要的時候讀一下即可,指針可以定義成局部指針變量,也就解決了全局變量過多的問題。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
指針
+關(guān)注
關(guān)注
1文章
481瀏覽量
70613 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28472 -
地址
+關(guān)注
關(guān)注
1文章
32瀏覽量
10829
發(fā)布評論請先 登錄
相關(guān)推薦
c語言程序設計案例教程
據(jù)類型和運算符、順序程序設計、分支程序設計、循環(huán)結(jié)構(gòu)、數(shù)組等。學習C語言一定要知道它的利器——指針。這正是C語言強大、高效和靈活的地方。如果
發(fā)表于 07-20 07:25
c++程序設計教程
C++是一種高效應用的程序設計語言,它即可進行過程化程序設計,也可進行面向?qū)ο?b class='flag-5'>程序設計,因而成了編程人員最廣泛使用的工具。學好C++,很容易
發(fā)表于 04-08 00:36
?124次下載
《C/ C++/ Java 程序設計經(jīng)典教程》
《C/ C++/ Java 程序設計經(jīng)典教程》(Deitel 著)
●集作者幾十年程序設計經(jīng)驗之精華,從軟件工程的原理強調(diào)結(jié)構(gòu)化程序設計方
發(fā)表于 04-08 02:10
?398次下載
C#程序設計與案例教程
C#程序設計與案例教程全書共分九章,按C#知識的系統(tǒng)性,由淺入深安排內(nèi)容,全面介紹了C# 語言基礎(chǔ),面向?qū)ο?b class='flag-5'>程序設計,GUI
發(fā)表于 10-22 11:05
?158次下載
C程序設計實驗指導書
本書重點講述了C語言程序設計以下幾個方面的內(nèi)容,包括順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu),數(shù)組,函數(shù),指針以下結(jié)構(gòu)體程序設計實習.
發(fā)表于 06-21 09:38
?0次下載
C語言程序設計介紹
包括:C 語言概述,算法基礎(chǔ),數(shù)據(jù)類型、運算符與表達式,順序
結(jié)構(gòu)程序設計,選擇結(jié)構(gòu)程序設計,循環(huán)結(jié)構(gòu)程序設計,數(shù)組,函數(shù),預處理命令,指針
發(fā)表于 02-17 15:49
?0次下載
C程序設計的詳細中文資料免費下載
本文檔的主要內(nèi)容詳細介紹的是C程序設計的詳細中文資料免費下載內(nèi)容包括了: 程序設計和C語言,算法---程序的靈魂,最簡單的
發(fā)表于 08-01 08:00
?0次下載
C程序設計中的指針詳細資料講解免費下載
C程序設計中使用指針可以: 1.使程序簡潔、緊湊、高效2.有效地表示復雜的數(shù)據(jù)結(jié)構(gòu)3.動態(tài)分配內(nèi)存4.得到多于一個的函數(shù)返回值
發(fā)表于 10-12 15:07
?16次下載
C語言程序設計教程之指針使用的課件免費下載
本文檔的主要內(nèi)容詳細介紹的是C語言程序設計教程之指針使用的課件免費下載指針使用主要內(nèi)容
地址與指針,指
發(fā)表于 11-16 17:47
?15次下載
C語言程序設計學習之數(shù)組中的指針資料說明
C程序設計中使用指針可以:使程序簡潔、緊湊、高效,有效地表示復雜的數(shù)據(jù)結(jié)構(gòu),動態(tài)分配內(nèi)存,得到多于一個的函數(shù)返回值
發(fā)表于 11-16 17:47
?19次下載
C++程序設計教程之指針的詳細資料說明
本文檔詳細介紹的是C++程序設計教程之指針的詳細資料說明主要內(nèi)容包括了:1. 指針的概念,2. 變量與指針,3. 數(shù)組與
發(fā)表于 03-14 16:04
?7次下載
C語言指針用作函數(shù)參數(shù)模塊化程序設計以及增量測試方法的程序
本文檔的主要內(nèi)容詳細介紹的是C語言指針用作函數(shù)參數(shù)模塊化程序設計以及增量測試方法的程序。
發(fā)表于 12-25 08:00
?1次下載
評論