C語言中的指標筆記

2022-03-08 18:20:46 字數 1973 閱讀 8987

1.為什麼需要指標:

2.什麼是指標:指標是程式資料在記憶體中的位址,而指標變數是用來儲存這些位址的變數。c語言中的陣列是指 一類 型別,陣列具體區分為 int 型別陣列,double型別陣列,char陣列 等等。同樣指標 這個概念也泛指 一類 資料型別,int指標型別,double指標型別,char指標型別等等。

4.空指標:指向空,或者說不指向任何東西。在c語言中,我們讓指標變數賦值為null表示乙個空指標,而c語言中,null實質是 ((void*)0) , 在c++中,null實質是0。換種說法:任何程式資料都不會儲存在位址為0的記憶體塊中,它是被作業系統預留的記憶體塊。

5.壞指標:指標變數的值是null,或者未知的位址值,或者是當前應用程式不可訪問的位址值,這樣的指標就是壞指標,不能對他們做解指標操作,否則程式會出現執行時錯誤,導致程式意外終止。任何乙個指標變數在做 解位址操作前,都必須保證它指向的是有效的,可用的記憶體塊,否則就會出錯。壞指標是造成c語言bug的最頻繁的原因之一。

6.void*型別指標:由於void是空型別,因此void*型別的指標只儲存了指標的值,而丟失了型別資訊,我們不知道他指向的資料是什麼型別的,只知道這個資料在記憶體中的起始位址,如果想要完整的提取指向的資料,程式設計師就必須對這個指標做出正確的型別轉換,然後再解指標。前面已經提到過,資料的型別是正確解析出記憶體資料的關鍵,相同的記憶體資料以不同的資料型別去解析的時候,會得到不同的值。程式需要得到什麼資料,不光要知道其位址,還要明確其型別,因此編譯器不允許直接對void*型別的指標做解指標操作

7.&是返回運算元位址的單目運算子,叫做取位址運算子。*是返回指定位址內變數的值的單目運算子,叫做指標運算子。

8.字元陣列和字元指標:字元指標可以指向乙個字串。字元指標指向的是乙個字串常量的首位址,即指向字串的首位址。以字串形式出現的,編譯器都會為該字串自動新增乙個0作為結束符,如在**中寫:"abc",那麼編譯器幫你儲存的是"abc/0"。字元指標str與字元陣列string的區別是:str是乙個變數,可以改變str使它指向不同的字串,但不能改變str所指的字串常量。string是乙個陣列,可以改變陣列中儲存的內容。

9.const char*是指向常量的指標,而不是指標本身為常量,可以不被初始化.該指標可以指向常量也可以指向變數,只是從該指標的角度而言,它所指向的是常量,通過該指標不能修改它所指向的資料。

10.指標完全可以作為函式的引數進行傳遞,在c中,陣列作為引數傳遞,跟指標作為引數傳遞都很類似的,指標傳的是該指標指向的位址,而陣列引數則是將該陣列的首位址傳遞過去

11.檔案指標:在c語言中用乙個指標變數指向乙個檔案,這個指標稱為檔案指標。通過檔案指標就可對它所指的檔案進行各種操作。

12.指標常量,常量指標

什麼是指標常量?指標常量即指標型別的常量。

char *const a="

john";

a="abc

"; //

錯誤,a指標,不能變,乙個指標型別的變數,存放的是位址,所以不能把'"abc"的位址賦給a

char *b= a; //

可以

什麼是常量指標?常量指標即是指向常量的指標,指標的值可以改變,指標所指的位址中的內容為常量不能改變。

const

char *a="

john";

char b="

abc";

a=b; //

正確,name1存放的位址可以改變

char *c= a; //

不可以,因為c 和 a存放的是同一塊位址,如果c位址中的內容改了,則a的內容也改了,那麼a就不再是指向常量的指標了。

IOS筆記 C語言中的指標

1 指標的基本概念 計算機給我們的記憶體若干個儲存單元,每個單元都有唯一位址,每個單元都可以儲存內容 位址 唯一的,獲取位址的方法 變數名 位址所對應的儲存單元 可變的 位址就是指標。2 指標與變數 注意 指標是乙個位址,是常量 指標變數是乙個變數 現在可以存放這個位址,下次可以存放其他位址 格式 ...

C 語言中的指標

指標是 c 語言中的精華,正確靈活的運用指標,可以表示複雜的資料結構,動態分配記憶體,方便使用字串和陣列,呼叫函式返回多結果,直接處理記憶體單元等等。位址就是記憶體的編號,如果拿旅店作為記憶體,那麼每個房間號其實就相當於位址了。當程式編譯時,就會對變數分配記憶體單元,分配時按變數型別分配大小。經過編...

C語言中的指標

隨著程式語言的越來越多,但c語言在程式語言中的地位似乎始終沒有改變,其中得益於c語言中的指標,可以直接去操作記憶體位址與暫存器,執行效率也高,在嵌入式領域運用得尤其廣泛。對於初學者來說指標是c語言中很難翻越的一座大山,指標的掌握程度直接關係到c語言的掌握程度,其實指標並不是那麼高不可攀,只是紙老虎而...