(嫌我碎碎念也沒用,這是我的部落格 哼)
函式指標與指標函式我就不多廢話了,粘一點小東西自己體會
指標函式:int* fun(int x,int y);函式指標:int (*fun)(int x,int y);
其中要注意:指標陣列其實沒什麼意思,陣列指標才是c的精髓,變數名稱與指標是有本質區別的(哈哈,總結的時候很有感覺,回頭看有點中二)函式指標的使用
fun = &function;
fun = function;
和x = (*fun)();
x = fun();
基本上是一樣的,為了形式統一建議使用指標的方法
什麼意思呢,先放我的**
#include
intmain()
輸出:a =
6422200
,&a =
6422200
p =6422200
,&p =
6422196a+1
=6422220
,&p =
6422196p+1
=6422220
,&p =
6422196
&b =
6422156
,&c =
6422112
可以看到指標陣列其實就是陣列,相當於一塊連續記憶體叫p,每個記憶體的內容是乙個指標,使用的時候迴圈賦值就好
陣列指標卻是乙個指標,那為什麼要說他是精髓呢,其實這句話是我們的老師在大一前兩節課說的,她告訴我們其實c的精髓是指標。我當時是這麼想的,int a[10]和int * p =a,沒有什麼區別,你說精髓就精髓吧。可是在這裡我突然想通了一點。
我想問你上面的a是什麼,你說他是一級指標?在哪?
他不是個什麼,他就不是個東西,a[0],才是我們c語言意義上的乙個東西,這個就比如我們定義了乙個變數int sum = 0,你說sum是個啥,他是個變數,那su是個啥?我把m去了是不是就是變數的位址了?他不是啊兄弟。這個其實是我們c語言有點尷尬的地方,我們在這個地方用了乙個叫陣列的東西,有a[0],但是他不像sum都是字母,結合得那麼緊密,大家說誒這個玩意去掉符號叫啥來著,叫a,那他是個啥呀,我們說他就是陣列a的首位址吧,其實質內容變成&a[0]了,於是就有了p = a,這樣乙個寫法。但是現在就很尷尬,這個a既然有了,那&a,又是啥?a就不是個東西,&a可就更不是個東西了,那我們只能繼續說&a = a(當然,他們對應的指標級別不一樣),那就跟趕鴨子上架一樣,很尷尬但是大家就這麼搞了。(這部分涉及到編譯原理的一些知識,簡單來說編譯完成後這個a就不存在了)
但是這個時候我們指標就不一樣了,他就是個東西啊,他可是實打實在記憶體中能找到的這麼乙個玩意,有名有姓家住0x****,這個玩意我們用起來就方便的不得了了,我們能指啥,我們啥都能指啊,只要是我們記憶體中的東西我們啥不能指的,這有個函式,誒,指,這有個陣列,誒,指,這有個結構體,誒,指,這是啥,這不就是封裝嗎,這不就能物件導向了嗎,這件簡直就披荊斬棘了。
說實話,我沒話說了*_*,我覺得我還是回開頭給兄弟們預告一下吧,這文章好像是個標題黨,8好意思。
指標 函式 陣列
1.指標函式 指標函式就是返回指標值的函式,本質是乙個函式。所以指標函式等價於 返回值為指標的函式 宣告形式 type func 引數列表 2.函式指標 函式指標就是乙個指向函式的指標。每個函式在編譯時,會被分配乙個入口位址,一般用函式名來表示,這個位址就是該函式的指標。宣告形式 type func...
函式指標,指標函式,陣列指標,指標陣列 區分
what why how 這些怎麼區分 函式指標 重點在指標,表示它是乙個指標,它指向的是乙個函式。eg int fun 指標函式 重點在函式,表示它是乙個函式,它的返回值是指標。eg int fun 陣列指標 重點在指標,表示它是乙個指標,它指向的是乙個陣列。int fun 8 指標陣列 重點在陣...
C語言函式,陣列與指標
int sum int ar 對應的函式原型sum 獲得了該陣列首元素的位址。但是,該引數並未包含陣列元素個數的資訊,我們有兩種方式讓函式獲得這一資訊。第一,在函式 中直接寫上固定陣列的大小。int sum int ar 該函式上面的定義,限制了智慧型計算10個int型別的元素。第二種方法 把陣列大...