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?所譯,整個譯文帶有我自己的理解與思想,如果譯得不好或不對之處還請同行朋友指點。當人們剛接觸布局的時候都比較傾向於使用定位的方式。因為定位的概念看起來好像比較容易掌握。表面上你...