(一)
1,談談你對const的理解(主要c語言範圍內)
2,下面的宣告都是什麼意思?
constinta;
intconst
a;
constint*
a;
int*const
a;
intconst
*const
a;
考點分析:
(2)是否深究技術細節。
解題思路:
short long unsigned signed static auto extern register
定義乙個變數
constinta;
intconst
a;
const的整形變數完全一樣。
(3)
constint*
a;
int*const
a;
intconst
*const
a;
對指標變數型別的理解。
(a)()*在資料定義時與表示式中優先順序一樣的理解。
int *a[10] ; //因為的優先順序高於*,因此是乙個陣列,每個成員型別為指標,指向int。
int(*a)[10]; //因為()優先順序高於,因此,先看裡面,是乙個指標,指向型別是乙個陣列。
(b)指標的判斷從左向右
const int *a; //a是乙個變數名,*表示它是乙個指標(型別已經確定),餘下的是指向 型別,因此,a是乙個指向const int 的指標,及指向的資料不可修改。
int *const a; //*cons起來修飾a,即a唯讀,*表示a是乙個指標,因此,這是乙個唯讀 // 的指標,指向的型別為int型的變數。
int const *const a; //*表示指標不可修改,int const是指標指向的型別,仍然是const。
(4)typedef void *vp;
(c) const void *ptr;
(d) const vp ptr;
首先要理解typedef是定義一種資料型別。一定與define區分開。
typedef void vp; //vp是型別名字,餘下的是這個型別的真實型別。
const vp ptr;
是不是替換為const void *ptr; // 不是,void* 是乙個整體
const int i; = int const i;
作用:(1)向程式猿傳遞乙個資訊,這個不要修改。
(2)有可能讓編譯器產生更精簡緊湊**,減少bug。
(3)合理保護我們唯讀的資料,避免不必要的錯誤。
使用位置:
(1)定義常量。防止被修改。
(2)函式的引數中,如果不希望子函式去修改被呼叫函式的某個資料。可以加以限制。例如:
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
(3)在c++中,類的成員函式的使用。
快手面試題刷題 9 16
一面 自我介紹 專案tcp三次握手 tcp四次揮手 udp tcp區別 輸入乙個 名稱,各層發生了什麼 http和https的區別 c 堆疊 c vector list map unordered map底層實現原理 一道智力題 演算法 二叉樹列印第k層 bfs 鍊錶複製 每個煉錶帶帶random節...
C 面試題(一)
記憶體管理 記憶體的分配方式 答 分配方式有三種,1 靜態儲存區,是在程式編譯時就已經分配好的,在整個執行期間都存在,如全域性變數 常量。2 棧上分配,函式內的區域性變數就是從這分配的,但分配的記憶體容易有限。3 堆上分配,也稱動態分配,如我們用new,malloc分配記憶體,用delete,fre...
C 面試題(一)
1.介紹一下stl,詳細說明stl如何實現vector。answer stl 標準模版庫,standard template library 它由容器演算法迭代器組成。stl有以下的一些優點 可以方便容易地實現搜尋資料或對資料排序等一系列的演算法 除錯程式時更加安全和方便 即使是人們用stl在uni...