這篇部落格是對於我個人的知識的複習,當然如果有某位大佬能夠指出這裡面有哪些概念含糊不清或者難懂,麻煩指出來感激不盡。
指標恐怕c裡最常見,最不起眼,但也比較難以掌握的知識。
選自《c和指標》當我們宣告乙個陣列時,它同時也分配了一些記憶體空間,用於容納陣列元素,但是,當我們宣告了乙個指標時,它只分配了用於容納指標本身的空間。
可以從幾大方面分
陣列相當於乙個集合,裡面儲存了多個相同型別的資料。指標相當於乙個變數,裡面放了指向其他物件的記憶體位址。
陣列在相鄰的記憶體中儲存資料,是一種資料結構,順序表。指標儲存位置和普通變數一樣,編譯器存在**中,執行時存在記憶體中。
指標在64位下是8個位元組大小,在32位是4個位元組大小,陣列的大小則與存的資料有關係,可以用sizeof來測試。
聽起來挺高大上的,不過實際上是還是蠻基礎的概念。
指標函式:返回值型別位指標的函式。上面聽起來是廢話,用例子來表示函式指標:指向函式的指標。
int *fun(int x,int y);
上面的就是乙個指標函式的宣告。
函式指標,其本質是乙個指標變數,該指標指向這個函式。總結來說,函式指標就是指向函式的指標。
宣告格式:型別說明符 (*函式名) (引數)
如下:
int (*fun)(int x,int y);
fun = &function;
fun = function;
取位址運算子&不是必需的,因為乙個函式識別符號就表示了它的位址,如果是函式呼叫,還必須包含乙個圓括號括起來的參數列。
呼叫函式指標的方式也有兩種:
x = (*fun)();
x = fun();
兩種方式均可,其中第二種看上去和普通的函式呼叫沒啥區別,如果可以的話,建議使用第一種,因為可以清楚的指明這是通過指標的方式來呼叫函式。
eg:
#includefloat add(int x, char y)
int main()
實際上還有類似指標陣列和陣列指標的概念,考慮到和上面的概念區別不大,所以這裡就不做說明了。
C語言複習 指標
程式設計練習 1.用指標實現報數問題 用指標的方法解決3人報數問題 include int main i k m 0 i是陣列計數,k是迴圈3次計數,m是退出的人計數 while m n 1 n是總人數,退出的人數要比總人數少乙個人結束迴圈 if k 3 i if i n 如果i到了成員最後,返回最...
c語言複習 指標
注 本文是對蘇小紅版c語言教材第9章的筆記 間接定址運算子 解引用運算子 e.g.int pa a 用於指標變數的定義 int a 0 printf a is d,a is p,pa is p,pa is d a,a,pa,pa 用於讀取指標變數儲存的位址對應的變數的值輸出結果 a與pa相同,a與p...
C語言複習 指標
1.什麼是指標 我們把位址形象化的稱為 指標 意思是通過他可以找到以他為位址的記憶體單元。指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別 指標所指向的型別 指標的值或者叫指標所指向的記憶體區 指標本身所佔據的記憶體區。讓我們分...