神一樣的c指標

2021-07-05 03:18:07 字數 1445 閱讀 3751

今天閱讀《c/c++程式設計師面試指南》中指標一塊,以前一知半解的指標問題頃刻間懂了。

下面,可以做個測試,如果下面的指標問題你能夠全都解答正確,那麼你的c語言功底真是神一般的了。

1.int *p;

2.int **p;

3.int *p[10];

4.int (*p)[10];

5.int *p(int);

6.int (*p)(int);

7.int (*p[10])(int);

這七個難度還不是很大,相信大多數讀者都能夠答的出來。

答案:1.乙個指向整型資料的指標

2.乙個指標的指標,它指向的指標指向乙個整型資料

3.乙個有十個指標的陣列,該指標指向整型資料

4.乙個指向有十個整型資料陣列的指標

5.就乙個函式(不是函式指標),該函式有乙個整型引數,返回值為乙個指向整型的指標

6.乙個函式指標,該函式有乙個整型的引數,返回值為整型型別

7.乙個有十個指標的陣列,該陣列中的指標指向乙個函式,該函式有乙個整型引數並返回乙個整型數

啊,當時看完我就籲了口氣,真神一般似的,但是但我接著看下去,下面有碰到乙個,我徹底崩潰了.......

題目是這樣的:

請解析 (*(void (*)())0)() 的含義。// 怎麼樣?要hold住阿!

分析問題:

不賣關子了,但是我早hold不住了。書中的答案是這樣的,

有些微處理器從0位址啟動,有時為了模擬開機時的情形,需要設計一條c 語句,去執行0位址的內容,於是就有了(*(void (*)())0)() 這條語句。

這條語句一眼看上去讓人頭疼,但分析之後還是挺簡單的。

首先,當有如下函式宣告時:

void fun(param);

這個函式的呼叫形式為:fun(param);

題目的函式沒有引數,所以就簡化成fun();

而0是這個函式的入口位址,即0就是這個函式的指標值,指標的函式宣告為:

void (*pfun)(param);

呼叫形式為:(*pfun)(param);

對於本題可以寫成:( *0 ) ();

但是函式指標變數不能是個常數,所以還要把0強制轉換成函式指標,根據原題可以元函式的函式指標原型為 void (*)();

於是(*(void (*)())0)()可以這樣來分析,首先用void (*)()把0強制轉換成了函式指標,然後再呼叫函式指標0所指向的函式。

可以用typedef來加深對本句的理解,如下:

typedef void (*pfun)();

((*pfun)0)();

這兩句和(*(void (*)())0)()是等價的,但是這樣更有助於加深對本句的理解。

總結:(*(void (*)())0)()就是 *(void (*)())0 所對應的函式的呼叫。

神一般的c語言指標.....希望對大家掌握指標有所幫助(*^__^*) 

不怕神一樣的對手,就怕豬一樣的隊友

大家在同樣的單位,同樣的工作環境,但是每個人工作的結果和效率卻大不相同。團隊作戰,有這麼一句話 不怕神一樣的對手,就怕豬一樣的隊友 當今社會講究的是效率,要的是配合,在乙個團隊中每個人都要盡量避免成為大家口中的 豬隊友 乙個朋友的公司是做軟體開發的,他們有乙個員工a寫了一段程式,負責日期的處理,寫完...

讀《神一樣的產品經理》

產品經理做什麼?以經驗來說是明確產品的核心使用者並獲得需求,分析需求及完成產品設計,在開發環節積極配合技術人員以確保進度正常進行。剛開始入行,總是著迷於研究各種工具的使用,並努力做出各種互動效果。在經過了這樣的一段時期後,會發現工具只是用來更好的表達思維邏輯,而洞悉使用者真正的需求才是真本領,也是需...

Vim 神一樣的編輯器

常用vim命令總結 1 替換 s 退換的字元 2 定位行 行號 g 3 定位到首行 h,定位到最後一行 l,定位到中間一行 m 4 刪除當前行 dd,游標不停留在當前行,使用d 游標還停留在當前行.5 複製當前行yy,貼上p 一般yyp聯合起來用貼上當前行 6 游標移到行首0,移到行尾 7 x儲存並...