C 面試題(一)(均是去年刷的題)

2021-08-18 22:55:40 字數 1827 閱讀 6944

(一)

1,談談你對const的理解(主要c語言範圍內)

2,下面的宣告都是什麼意思?

const

inta;

int

const

a;

const

int*

a;

int

*const

a;

int

const

*const

a;

考點分析:

(2)是否深究技術細節。

解題思路:

short long unsigned signed static auto extern register

定義乙個變數

const

inta;

int

const

a;

const的整形變數完全一樣。

(3)

const

int*

a;

int

*const

a;

int

const

*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...