static 變量/函數:內部鏈接,僅本編譯單元可見。在確定時間內完成任務,核心指標:實時性(截止時間保證)與可靠性。
全局 → 靜態區(.data/.bss);區域 → 棧。
左右子樹皆為 AVL,且高度差絕對值 ≤ 1。
遞歸過深、大型區域數組、未釋放資源(實際指棧耗盡,非堆洩漏)。
建構時對象類型尚未確定,vptr 未初始化,無法動態派發。
O(n²)。
if (fabs(x) < 1e-6) // 或 x > -EPS && x < EPS
應用層 → 傳輸層 → 網絡層 → 數據鏈路層 → 物理層。
ARP(Address Resolution Protocol)。
網絡號 + 主機號,需配合子網掩碼按位與區分。
循環鏈表 + 取模運算實現。
浮點型(float/double)。
int a = 4;
a += (a++); // 未定義行為(C++17 前)
a += (++a); // 未定義行為
(++a) += a; // 合法,a=11
結論:單一序列點多次修改同一變量 → 未定義行為,面試答「未定義」最安全。
char str[] = "https://www.ibegroup.com/"; // 含 \0 共 28 字節
char *p = str;
int n = 10;
sizeof(str) // 28 (數組大小)
sizeof(p) // 4 (指針大小)
sizeof(n) // 4 (int 大小)
void Foo(char str[100]) {
sizeof(str) // 4 (退化為指針)
}
void *p = malloc(100);
sizeof(p) // 4 (指針大小,非分配大小)
#ifndef/define/endif:防頭文件重複包含<> 找系統路徑,"" 找當前目錄再找系統路徑extern "C":解決 C++ name mangling 導致的 C 函數鏈接失敗switch 不接受浮點型(1) void GetMemory(char **p, int n) { *p = malloc(n); }
void Test() { char *s=NULL; GetMemory(&s,100); strcpy(s,"hello"); printf(s); }
// 輸出 hello ✓
(2) void Test() { char *s=malloc(100); strcpy(s,"hello"); free(s);
if(s!=NULL) { strcpy(s,"world"); printf(s); } }
// 輸出 world(野指針訪問,未定義行為,碰巧內存未覆蓋)
(3) char *GetMemory() { char p[]="hello world"; return p; }
// 返回棧上數組地址 → 野指針,輸出亂碼/崩潰
char* strcat(char* dst, const char* src) {
char* p = dst;
while (*p) p++;
while (*p++ = *src++);
return dst; // 返回原指針支援鏈式:strcat(strcat(a,b),c)
}
不安全。轉換用 Format、構造函數或 (LPCTSTR) 強轉。
vector)