和小白一起學資料結構二之c語言和指標

2021-09-26 14:42:10 字數 2312 閱讀 8489

今天呢我們主要複習一下c語言和指標基礎,注意注意⚠️這裡僅包括指標部分。今天看書的時候翻到當時自學計算機組成原理時的筆記,乾貨滿滿很想和各位道友一同分享。關於組成原理和c語言基部分,如果大家有要求,更完資料結構或者資料結構的每日任務完成之後再補充~

繼續話不多說,進入我們今天的學習中吧。

提到c語言,從第一版標準語法出世至今,該語言成為計算機學界多年屹立不倒不倒的旗幟,秘訣就在指標。而提到指標就不得不講記憶體和位址。

基本概念

1.記憶體(memory)1

,其作用是用於暫時存放cpu中的運算資料,以及與硬碟等外部儲存器交換的資料。只要計算機在執行中,cpu就會把需要運算的資料調到記憶體中進行運算,當運算完成後cpu再將結果傳送出來,記憶體的執行也決定了計算機的穩定執行。

2.記憶體位址,在電腦運算中,位址是一種用於軟體及硬體等不同層級中的資料概念,用來訪問電腦主存中的資料。

位址與記憶體的關係

形象一點,我們可以把計算機中的記憶體看作銀行裡用於儲存業主金條寶貴物品的保險箱。每個保險箱有一定的容量,可以儲存你能想象到的各種奇珍異寶,為了不使拿鑰匙的管理員混淆甲老闆存寶石的箱子和乙老闆存大金條的箱子,每乙個箱子都有乙個固定的編碼。計算機的記憶體由數以萬計的位(bit)組成,每個位可以容納0或1。由於乙個位所能表示值的範圍太有限,所以我們通常規定8個位為乙個位元組(byte),乙個位元組的容量就是我們虛擬銀行保險箱的單位大小。為了裝下一整幅字畫,我們把兩個或者更多個單位和在一起作為乙個更大的保險箱,機器以字為單位儲存整數,每個字一般由個或個位元組組成。

1.記憶體中的每個位置都有乙個獨一無二的位址標識。

2.記憶體中的每個位置都包含乙個值。

注意事項:考慮下面這個以二進位制形式表示的32位數:

01100111011011000110111101100010

下面這是位可以被解釋的許多結果中的幾種。這些值都是基於motorola 68000的處理器上得到的,若系統不一樣,得到的解釋又不一樣。型別值

1個32位整數

1735159650

2個16位整數

26476和28514

4個字元

glob

浮點數1.116533*1024

所以我們不能簡單地通過檢查乙個值的位來判斷它的型別。

讓我們來看下面這段c語言**:

int a=112, b=1;

float c=3.14;

int *d=&a;

float *e=&c;

假設d的位址為112和它的內容為100(區分指標變數的位址和內容是非常重要的),現在我們可以給出下表。

表示式右值型別a

112intb-1

intc

3.14

float

d100

int*

e108

float*

*d112

int*e

3.14

float

我們能得出分別命名為a\b\c\d\e的房間之間的次序關係是abc

de,而d中儲存的是a房間的另一把鑰匙,所以d即d+?,就可以得到a中的寶物了,即引用d等同於直接引用a,此操作即為指標的間接訪問(indirdction)操作

int    *num;

...*num=12;

這個宣告建立了乙個叫num的指標變數,後面那條賦值語句將12儲存在了num所指向的記憶體位置。但num指向**呢?我們宣告了這個變數,但未對它進行初始化,所以沒有辦法預料12究竟存在了**,是不是改變了我們原先宣告的變數值。

如果num的初始值是個非法位址,語句將會出錯,程式也將終止2

。但若包含合法位址,接下來就是乙個非常難以捕捉的bug。所以在對指標間接訪問之前,一定要確保其已被初始化。

顧名思義就是指標的指標。

以上~看到這裡,道友一定手癢了吧,不妨來幾道指標常用例項練練手。明天見~

也被稱為記憶體儲器和主儲存器.是由記憶體晶元、電路板、金手指等部分組成 ↩︎

段違例(segmentation violation),或者記憶體錯誤(memory fault),也一般是保護性異常(general protection exception)的根源之一。 ↩︎

和小白一起學資料結構七之線性表的順序結構及實現

博主正式開學了,課業壓力很重,怕跟不上各位道友的期望,做不到每日一更,嗚嗚嗚嗚 抱頭哭泣 總而言之,博主會繼續努力,一起加油!加油!博主是個對自己百分之百不自信不滿意的人,所以萬事不做到能力範圍內的最好是不可能開始嘗試一件事的,即使開學學習壓力較大,但部落格的質量一定會 每天最少是一講,如果周 六 ...

一起學C 二

第二章 核心c 第1節,第乙個c 程式。這個程式是你現在包括以後能看到的所有c 程式中最最簡單的,它的功能就是在螢幕上顯示一串字元,然後等待執行它的人敲一下回車鍵後結束。想把這個程式從頭到尾做一遍,對乙個沒有程式設計經驗的人來說,也是乙個不容易的工作。我們先來說說這裡面有哪些坑。1.windows自...

從零開始一起學C語言(九) 資料結構

目錄 一 資料結構的介紹 1 資料結構 2 資料結構的儲存方式 二 記憶體的動態開闢和釋放 1 記憶體的動態開闢 2 記憶體的動態釋放 三 鍊錶的建立 1 煉表頭的建立 四 鍊錶的讀和寫 1 建立任意數量的節點 2 鍊錶的寫 3 鍊錶的讀 五 鍊錶的插入 1 頭插法 2 尾插法 六 鍊錶的刪除 相互...