你C 的IQ 有多少?

2021-04-15 02:05:25 字數 987 閱讀 7731

okay, 在論壇上我看到過這樣一道c++的面試題:

如何將int* (*p)[10] 初始化?

a) int* (*p)[10] = new int(*)[10] [10]

b) int* (*p)[10] = new int*[10][10][10]

c) int* (*p)[10] = new int*[10][10]

哈哈,很好的一道題,考察很多的知識點,最重要的考察你c++ 的iq。

其實這道題一點都不難。

這究竟是幾維陣列?1,2還是3?答案是2.為什麼?我們先把 () 去掉得到如下表示式int* * p[10]。因為操作符的優先順序比*高,所以我們現在看到的是乙個一維陣列p[10],它的type是int **.所以()的作用很明顯了提高 * 的優先級別使p與它結合。那麼還記得如何define乙個陣列麼?

int *p = new int [10];

現在我們的結果比較清楚了,那麼看起來(*p)是乙個一維陣列的定義 + [10]很明顯就是乙個2維陣列了。

put it all together:

int* (*p)[10]的意思是定義乙個2維陣列,這個陣列的type是int *. c是答案

so, the key is:

理解如何宣告乙個陣列,以及運算子的優先順序。

那麼既然理解了理論,就一起應用一下。比如說,我現在要宣告乙個指向乙個返回整數的函式的指標:

int *pfun(string a, string b);

這樣對麼?答案是不對,一定要注意

* 的優先順序。

*是左結合的,現在的定義是乙個叫做

pfun

的函式返回乙個

int *。

正確的方式:

int (*pfun)(string a, string b);

那麼我如何宣告乙個叫做

char*

的陣列,

答案如下:

char* *p = new char* [10];

你的學習時間有多少

感覺時間過得越來越快 尤其是在大學,發現很多同學在大三下學期或剛公升入大四就已在找工作了,有的也找到了。於是很多大四的學生正兒八經地 步入 職場,開始了工作。但是,在找到工作之前,不妨替學生們算一算幾年裡用於學習的時間。按照正常的節假日計算,每年的學習天數大約是250天,再減去學期中的節假日 病事假...

你有多少弱點,就有多少失敗的可能

沒有努力支撐的繁華,終究會變成過眼雲煙 很多事情之所以看起來不可控,都是因為你沒有對他進行有效思考。過度放縱自己。不吃不吃又吃了。吃著吃著又渴了。渴著渴又。關鍵時刻忍住就贏了,熬,人生最深的滋味 當我們萬念俱灰,懷才不遇的時候 熬,當你經歷過千山萬水的時候。才能有乙個有故事的人生。不要因為感動才在一...

你對position的了解有多少

此文根據steven bradley的 how well do you understand css positioning?所譯,整個譯文帶有我自己的理解與思想,如果譯得不好或不對之處還請同行朋友指點。當人們剛接觸布局的時候都比較傾向於使用定位的方式。因為定位的概念看起來好像比較容易掌握。表面上你...