C語言常用面試題 第二階段

2021-10-05 22:16:45 字數 1462 閱讀 2641

#define max(a,b)	(((a)-(b)) >> 31 ? (b) : (a))		

//注意三目運算子的原理。

說明:利用變數為負數時最高位為負數的原理,實現了max巨集。

注意:不支援浮點型。

例如:

unsigned

char a,y;

x =89;

y =56;

(1)printf

("val = %d\n"

,(y-x)

>>31)

;//結果為:-1 : max(y,x)

(2)printf

("val = %d\n",(

(y-x)

>>

31? x : y)

;//結果為:x :(1)值為0,則(2)結果為y; (1)值為-1,則(2)結果為x。

#include

using

namespace std;

//定義空間

intmain

(void

)

首先說說const的作用:

將變數定義成唯讀屬性,修飾函式引數,修飾函式返回值 三個作用。

一:唯讀屬性:被const修飾的變數受到強制保護。

二:修飾函式引數:防止被函式意外的變動。

三:修飾函式引數,修飾函式返回值:提高程式的健壯性

比較:(1)const 變數是由資料型別,而巨集常量是沒有資料型別的;所以編譯器可以對前者進行型別安全檢查,而後者只進行字元替換,沒有型別安全檢查,所以可能會產生意料不到的錯誤。

(2)有些整合化的調式工具可以對const變數進行除錯,但是不能對巨集常量進行除錯。

答:陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。

(1)修改內容的差異

char a = 「hello」;

a[0] = 『x』;

char *p = 「world」; // 注意p 指向常量字串

p[0] = 『x』; // 編譯器不能發現該錯誤,執行時錯誤

(2)用運算子sizeof 可以計算出陣列的容量(位元組數)。

sizeof(p),p 為指標得到的是乙個 指標變數的位元組數,而不是p 所指的記憶體容量。c++/c 語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標

char a = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 位元組

cout<< sizeof(p) << endl; // 4 位元組

計算陣列和指標的記憶體容量

void func(char a[100])

第二階段小結

資料結構基本概念 資料 資料即資訊的載體,是能夠輸入到計算機中並且能被計算機識別,儲存和處理的符號總稱 資料元素 資料元素是資料的基本單位,又稱之為記錄。一般,資料元素由若干基本項 字段,域,屬性 組成。資料結構 資料結構指的是資料元素及資料元素之間的相互關係,或組織資料的形式 資料之間的結構關係 ...

第二階段小結

先是pta上的作業 這題要求我們熟練的掌握類之間的繼承與多型的使用,在類與類之間傳遞資訊時不能弄混,要弄清楚單一職責原則。這一題主要考察繼承與多型,泛型容器的應用。接下來是學習通上的課後作業 第乙個是單向鍊錶 單向鍊錶由乙個個的節點組成,這些節點都帶有下乙個節點的引用,最後乙個節點指向null,這樣...

vivi的第二階段

vivi 的第二階段 vivi 的第二階段是從 main 函式開始,同一般的 c語言程式一樣,該函式在 init main.c 檔案中,總共可以分為 8個步驟。1 函式開始,通過 putstr vivi banner 列印出vivi 的版本。vivi banner 在 init version.c ...