本文目錄一覽:
- 1、c語言指針的概念
- 2、C語言指針是什麼?
- 3、C語言里可以起指針形別名嗎typedef struct _DEVDATA{ }*PDEVDATA;
- 4、C語言中typedef定義結構體指針的區別?
- 5、C語言中指針和引用的區別
c語言指針的概念
指針是C語言中廣泛使用的一種數據類型。 運用指針編程是C語言最主要的風格之一。利用指針變數可以表示各種數據結構; 能很方便地使用數組和字元串; 並能象彙編語言一樣處理內存地址,從而編出精練而高效的程序。指針極大地豐富了C語言的功能。 學習指針是學習C語言中最重要的一環, 能否正確理解和使用指針是我們是否掌握C語言的一個標誌。同時, 指針也是C語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多編程,上機調試。只要作到這些,指針也是不難掌握的。
指針的基本概念 在計算機中,所有的數據都是存放在存儲器中的。 一般把存儲器中的一個位元組稱為一個內存單元, 不同的數據類型所佔用的內存單元數不等,如整型量佔2個單元,字元量佔1個單元等, 在第二章中已有詳細的介紹。為了正確地訪問這些內存單元, 必須為每個內存單元編上號。 根據一個內存單元的編號即可準確地找到該內存單元。內存單元的編號也叫做地址。 既然根據內存單元的編號或地址就可以找到所需的內存單元,所以通常也把這個地址稱為指針。 內存單元的指針和內存單元的內容是兩個不同的概念。 可以用一個通俗的例子來說明它們之間的關係。我們到銀行去存取款時, 銀行工作人員將根據我們的帳號去找我們的存款單, 找到之後在存單上寫入存款、取款的金額。在這裡,帳號就是存單的指針, 存款數是存單的內容。對於一個內存單元來說,單元的地址即為指針, 其中存放的數據才是該單元的內容。在C語言中, 允許用一個變數來存放指針,這種變數稱為指針變數。因此, 一個指針變數的值就是某個內存單元的地址或稱為某內存單元的指針。圖中,設有字元變數C,其內容為「K」(ASCII碼為十進位數 75),C佔用了011A號單元(地址用十六進數表示)。設有指針變數P,內容為011A, 這種情況我們稱為P指向變數C,或說P是指向變數C的指針。 嚴格地說,一個指針是一個地址, 是一個常量。而一個指針變數卻可以被賦予不同的指針值,是變。 但在常把指針變數簡稱為指針。為了避免混淆,我們中約定:「指針」是指地址, 是常量,「指針變數」是指取值為地址的變數。 定義指針的目的是為了通過指針去訪問內存單元。
既然指針變數的值是一個地址, 那麼這個地址不僅可以是變數的地址, 也可以是其它數據結構的地址。在一個指針變數中存放一
個數組或一個函數的首地址有何意義呢? 因為數組或函數都是連續存放的。通過訪問指針變數取得了數組或函數的首地址, 也就找到了該數組或函數。這樣一來, 凡是出現數組,函數的地方都可以用一個指針變數來表示, 只要該指針變數中賦予數組或函數的首地址即可。這樣做, 將會使程序的概念十分清楚,程序本身也精練,高效。在C語言中, 一種數據類型或數據結構往往都佔有一組連續的內存單元。 用「地址」這個概念並不能很好地描述一種數據類型或數據結構, 而「指針」雖然實際上也是一個地址,但它卻是一個數據結構的首地址, 它是「指向」一個數據結構的,因而概念更為清楚,表示更為明確。 這也是引入「指針」概念的一個重要原因。
C語言指針是什麼?
C語言指針其實也是變數,只不過指針變數存儲的是其它變數的地址。
C語言里對變數取地址:變數名,對指針取指向的變數的值:*指針。
指針有類型的區別,即指針指向什麼類型,要在定義指針時指定類型。
定義舉例:int *p;//p是指向int類型的指針,只能把int變數地址賦值給p。
用指針有很多安全隱患,容易內存溢出,泄漏。
java應該是出於安全考慮不用指針,C#語言也是。
C語言里可以起指針形別名嗎typedef struct _DEVDATA{ }*PDEVDATA;
PDEVDTAT pD;就是定義一個結構體指針
pD-hdev;就是使有結構體裡面的變數
C語言中typedef定義結構體指針的區別?
typedef用來取別名的。
你相當於給這個結構體取了一個結構體類型的別名BiTNode,之後你定義結構體變數就用BiTNode 變數名;
同理你給該結構體取了一個結構體指針類型的別名BiTree,之後你定義結構體指針就用
BiTree 變數名;
你第二種要麼把BiTNode *BiTree前面的BiTNode去掉,要麼另寫一個
typedef BiTNode *BiTree;
C語言中指針和引用的區別
指針,全稱為指針變數,是用來存儲內存地址的一種變數。程序中,一般通過指針來訪問其指向的內存地址中的內容(數據)。
引用,是C++中提出來的一種新的使用變數的方式,即,給實際變數起個別名,通過這個別名來引用實際的變數。標準C中不支持變數的引用。
這兩個概念沒有任何相關性。
指針是實實在在的變數,有自己的內存存儲空間,它可以指向任何有效的變數。
引用是一種形式、方法,定義的引用變數,實際上是原實際變數的另一個名稱(別名),引用變數本身沒有自己的實際存儲空間,操作引用變數,就是在操作實際變數。
如:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/311577.html