對 P 的理解,再聯想

2022-03-04 18:13:27 字數 1190 閱讀 1002

前言:

正文:

*p++,這種用法是很常見的,很有用的。但是不是很好理解,現在

來徹底分析下~~

首先*號和++號的優先順序是同一級,但是它們的結合方向是從右邊到左邊。

那麼很明顯核心p先和++先結合,這個就確定了關鍵的一件事——++會讓指標遞增,而不是指標指向的數,

也就是說會遞增的是p而不是*p。

但是這裡的++,是後++。後++有個特點——++會在本條語句執行完之後執行。

知道了,這些之後*p++就可以理解了,他就等價於:先執行*p,然後將p++。

陣列指標與指標陣列也是這麼分析:

int* p;

首先核心是p,再看p更喜歡誰~~

是最高優先順序的運算子(小括號排名第二,但是我們知道裡只能放常量,無法放變數,而核心往往是變數

所以看上去小括號更牛逼些)。

所以p先和結合,和結合之後就成了p,很明顯這是個陣列,p再和*結合就成了*p,

就成了指標陣列,應為p先結合,int* p的本質是個陣列,然後陣列內部存放的是int型的指標。

再看陣列指標:

int(*p);分析流程還是遵循以上規則:

首先找到核心p,小擴寬把p與隔開了,那麼此時p和*最近,他們可以結合,且結合成*p,很明顯*p是乙個

指標的形式,*p整體再和結合,這就成了陣列指標,應為p先和*結合,所以他的本質是乙個指標,這個指標

指向了乙個int型的陣列。

再看指標函式:

int *add();

首先核心是add,add先和優先順序更高的小括號結合,就成了乙個整體add(),很明顯這是個函式。

add()整個再和*結合,就是指標函式了。應為add先和小括號結合,所以他的本質是乙個函式。

乙個能返回(乙個int型)指標的函式。

最後看函式指標:

int (*add) ();此時add被乙個小擴隔開了,此時add和*最近,他們先結合,所以int (*add) ()本質

是乙個指標,這個整體再和小括號結合,就成了函式指標。本質是指標,所以這個是乙個指向函式的指標。

(函式的特點是返回值為int,引數列表為空)

對函式的再理解

函式的定義域是針對單獨的自變數而言的 引例,已知函式 f x 2x 1 的定義域是 0,infty 則意味著只能是 x in 0,infty 引例,已知 f 2x 1 x 2 的定義域為 1,1 則意味著需要先由 f 2x 1 x 2 變換得到 f x cfrac cfrac 具體變換 令 2x 1...

對DataFrame的再理解

1 構造需要從字典構造 cds codes pd.dataframe cds codes codes.set index code 如果要指定index,可以用set index,但要注意必須再次賦值。2 如果先用index陣列和列名構造乙個骨架,也可以 shijian 2011 2012 2013...

遞迴函式的再理解

學習到遞迴函式的寫法時,總是很難深刻理解到背後的設計思想。只知道問題被分解到了,還有乙個出口,外加呼叫自身,最後就能神奇的實現功能。後來,知道函式呼叫是一種棧式結構,每一次呼叫會把當前狀態壓棧,然後繼續往前走,直到呼叫的函式有結果了,再返回去。看似理解了背後的邏輯,但是,對於遞迴的掌握還是僅僅侷限於...