又是一道筆試題,看著就蛋疼,做著做著就懵逼了,雖然沒做對,但試著解釋下,下次不能在錯了!
題目:
char *c = ;
char **cp = ;
char ***cpp = cp;
cout << **++cpp << endl;
cout << *--*++cpp + 3<< endl;
cout << *cpp[-2] + 3 << endl;
cout << cpp[-1][-1] + 1 << endl;
結果:
world
lohi
ew因為:
++cpp:(++cpp)就是&cp[1],就是&&c[2],所以第一行結果為point,此時cpp已經變為&cp[1]
*--*++cpp+3:(++cpp)就是&cp[2],*++cpp就是c+1就是&c[1],--*++cpp就是&c[0],*--*++cpp就是c[0],*--*++cpp+3就是lo
*cpp[-2]+3:這時cpp變為&cp[2],cpp[-2]就是&cp[0],*cpp[-2]就是cp[0],就是c+3就是&c[3],*cpp[-2]+3就是hi
cpp[-1][-1]+1:這時cpp還是&cp[2],cpp[-1][-1]就是&cp[1][-1]就是c[1],cpp[-1][-1]+1就是ew
自己畫了張圖,加深理解,略抽象了。。。
Cpp 類和物件
圍繞具體問題對屬性和行為進行有意識的選擇,使複雜的具體問題得到簡化 物件導向的程式設計 1.類的一般形式 class struct 類名 繼承方式 基類,類名 void 返回型別 函式名 形參表 常屬性 異常說明 資料型別 變數名 成員變數 2.訪問控制限定符 3.成員函式 c 支援三種型別的成員函...
h 和 cpp的區別
include該hpp檔案即可,無需再將cpp加入到project中進行編譯。而實現 將直接編譯到呼叫者的obj檔案中,不再生成單獨的obj,採用hpp將大幅度減少呼叫 project中的cpp檔案數與編譯次數,也不用再發布煩人的lib與dll,因此非常適合用來編寫公用的開源庫。hpp的優點不少,但...
c和 cpp 的 區別
在編譯原始檔時,c編譯器和c 編譯器都會對符號 函式或變數 名作某些修正,但兩者採用的修正方法不同,所以兩者生成的目標檔案不能互相鏈結。在c 中使用extern c 可以讓c 符號獲得c鏈結特性。由於c 編譯器會自動定義 cplusplus巨集,所以在c語言標頭檔案中採用這種結構可以保證無論使用何種...