1. 指標的**
在當代,大多數的現代計算機都會把記憶體分割成位元組,每個位元組都有著其唯一的位址。可執行程式由**和資料兩部分構成,而程式中的每個變數都占有著乙個或多個位元組,也就是說,每個變數都有著自己的位址。而這個就是指標的**。
其實每個位址就是乙個數,但是我們卻不能用數來表示位址,儲存位址,我們需要用指標變數。例如int *p = i,我們就可以說p是指標變數,儲存著變數i的位址。
那麼我們說int *p中,p就是指向int 型別物件的指標變數。
2. 取址運算子和間接定址運算子
&,取址運算子,如果x是變數,那麼&x就是變數x所在的位址。
*,間接定址運算子,如果p是指標變數,*p就代表p所指向的變數的值。
當我們在程式中宣告int *p時,其實並沒有讓p指向任何位址,只是乙個空指標,我們也稱之為懸浮指標,在程式中,我們應該盡量避免這樣的狀況,應該盡量當宣告的同時進行初始化。否則當今後不小心對*p進行賦值時,如果p恰好指向了某一塊系統記憶體位址,就會造成系統的崩潰。
其實我們第一次接觸取址運算子,應該是應用於scanf,現在我們來想想scanf(「%d」,&a)的含義,其實就是告訴scanf函式,要把讀取的值放到哪個位址的下面。
3. const保護引數
我們之前說過const代表常量,不允許改變,那麼我們也可以將const應用於指標引數上。例如:
void test(const int *p)就代表*p是不可以改變的,意思也就是p所指向的整數不能被改變。
void test(int * const p)則代表,p是不可以被改變的,也就是說p只能指向這一塊位址。
void test(const int * const p)則代表,p只可以指向這一塊位址,並且這一塊位址的資料不能被改變。
4.指標作為返回值
這裡我只提一點,不要反悔區域性變數的指標變數,因為區域性變數出了作用域馬上被**,這時,該指標也就指向了一塊廢棄的位址。
當然,我們可以返回某些引數的位址,外部變數和靜態變數的位址。總之,要確保該指標指向的是一塊未經**的位址即可。
C語言學習筆記6
最開始學習的時候從最簡單的程式設計開始學習,那麼我們都會看一些關於 c語言基礎書籍 把基礎打好之後我們會慢慢的看一些 c語言提高書籍 那麼接下來我們就繼續進行打基礎的工作。1 啟動vc 編譯系統 單擊 file 選單中 new 命令,進入vc 編譯系統介面,選擇 files 選項卡,選擇c 原始檔命...
C語言學習筆記6
魯迅先生曾說過,偉大的成績和辛勤勞動是成正比例的,有一分勞動就有一分收穫,日積月累,從少到多,奇蹟就可以創造出來。學習也是同等道理,日積月累,逐漸儲備知識就可以完成自己的理想。然而看 c語言程式設計教程 是儲備知識的乙個方法,所以現在就來看看我要學習的知識內容。if語句是大型程式使用最多的結構,不管...
C語言學習筆記 6
1.指標的 在當代,大多數的現代計算機都會把記憶體分割成位元組,每個位元組都有著其唯一的位址。可執行程式由 和資料兩部分構成,而程式中的每個變數都占有著乙個或多個位元組,也就是說,每個變數都有著自己的位址。而這個就是指標的 其實每個位址就是乙個數,但是我們卻不能用數來表示位址,儲存位址,我們需要用指...