這裏顯示兩個版本的差異處。
| Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
|
visual_c_plusplus [2024/04/15 08:15] don |
visual_c_plusplus [2025/11/26 16:53] (目前版本) don [指標運算子 (*, &)] |
||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== Visual C++ 研究 ====== | ====== Visual C++ 研究 ====== | ||
| - | 驅動程式中使用 | + | 驅動程式中使用\\ |
| - | KdPrint 而盡量不要使用 DbgPrint | + | KdPrint 而盡量不要使用 DbgPrint\\ |
| - | KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出 | + | KdPrint 會根據編譯版本看是否呼叫 DbgPrint或者不輸出\\ |
| - | Checked --> KdPrint --> DbgPrint | + | Checked --> KdPrint --> DbgPrint\\ |
| - | Free --> KdPrint --> | + | Free --> KdPrint --> |
| - | DbgView 免費提供 可在微軟的網站中找到 | + | DbgView 免費提供 可在微軟的網站中找到\\ |
| - | DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。 | + | DbgView 可以同時監聽內核和 Win32 上層應用程式發送的除錯訊息。\\ |
| ^符号 ^格式说明符 ^类型 ^ | ^符号 ^格式说明符 ^类型 ^ | ||
| |%c, %lc|ANSI字符 |char| | |%c, %lc|ANSI字符 |char| | ||
| - | %C, %wc 宽字符 wchar_t | + | |%C, %wc|宽字符 |wchar_t| |
| - | %d, %i 十进制有符号整数 int | + | |%d, %i |十进制有符号整数 |
| - | %D 十进制__int64 __int64 | + | |%D |十进制__int64 |__int64| |
| - | %L 十六进制的LARGE_INTEGER LARGE_INTEGER | + | |%L |十六进制的LARGE_INTEGER |LARGE_INTEGER| |
| - | %s, %ls NULL终止的ANSI字符串 char* | + | |%s, %ls|NULL终止的ANSI字符串 |char*| |
| - | %S, %ws NULL终止的宽字符串 wchar_t* | + | |%S, %ws|NULL终止的宽字符串 |wchar_t*| |
| - | %Z ANSI_STRING字符串 ANSI_STRING | + | |%Z |ANSI_STRING字符串 |ANSI_STRING| |
| - | %wZ UNICODE_STRING字符串 UNICODE_STRING | + | |%wZ |UNICODE_STRING字符串 |UNICODE_STRING| |
| - | %u 十进制的ULONG ULONG | + | |%u |十进制的ULONG |ULONG| |
| - | %x 小写字符十六进制的ULONG ULONG | + | |%x |小写字符十六进制的ULONG |ULONG| |
| - | %X 大写字符十六进制的ULONG ULONG | + | |%X |大写字符十六进制的ULONG |ULONG| |
| - | %p 指针Pointer 32/64位 | + | |%p |指针Pointer 32/64位 | | |
| + | |||
| + | 運算子的種類 | ||
| + | ^算數運算子 ^說明 ^範例(假設 a = 10, b = 3)^ | ||
| + | | + | 加法運算子 | a + b 結果為 13 | | ||
| + | | - | 減法運算子 | a - b 結果為 7 | | ||
| + | | * | 乘法運算子 | a * b 結果為 30 | | ||
| + | | / | 除法運算子 | a / b 結果為 3 (整數除法) | | ||
| + | | % | 取餘數 | a % b 結果為 1 (餘數) | | ||
| + | | ++ | 遞增 | a++ 使 a 變為 11 | | ||
| + | | -- | 遞減 | a-- 使 a 變為 9 | | ||
| + | |||
| + | ^邏輯運算子 ^說明 ^範例 (假設 a = 1, b = 0) ^ | ||
| + | | && | 邏輯 AND | a && b 結果為 0 (僅當兩者皆非零時才為真) | | ||
| + | | < | ||
| + | | ! | 邏輯 NOT | !a | | ||
| + | |||
| + | |||
| + | ^位元運算子 ^說明 ^範例 ^ | ||
| + | | ~ | 位元補數運算子 | | | ||
| + | | & | 位元 AND 運算子 | a & 0x0F 將 bit 4~7 設為 0 | | ||
| + | | < | ||
| + | | < | ||
| + | | << | 位元左移運算子 | a << 8, a 左移 8 bit | | ||
| + | | >> | 位元右移運算子 | a >> 8, a 右移 8 bit | | ||
| + | |||
| + | ^關係運算子 ^說明 ^範例 (假設 a = 5, b = 3) ^ | ||
| + | | == | 等於運算子 | a == b 結果為 0 (False)| | ||
| + | | != | 不等於運算子 | a != b 結果為 1 (True) | | ||
| + | | > | 大於運算子 | a > b 結果為 1 (True) | | ||
| + | | < | 小於運算子 | a < b 結果為 0 (False) | | ||
| + | | >= | 大於等於運算子 | a >= b 結果為 1 (True) | | ||
| + | | <= | 小於等於運算子 | a <= b 結果為 0 (False) | | ||
| + | |||
| + | ^指派運算子 ^說明 ^範例 | ||
| + | | = | 簡單指派 | a = 5;| | ||
| + | | += | 加後指派 | a += 2; 等同於 a = a + 2;| | ||
| + | | -= | 減後指派 | a -= 2; 等同於 a = a - 2;| | ||
| + | | *= | 乘後指派 | a *= 2; 等同於 a = a * 2;| | ||
| + | | /= | 除後指派 | a /= 2; 等同於 a = a / 2;| | ||
| + | | %= | 模後指派 | a %= 2; 等同於 a = a % 2;| | ||
| + | |||
| + | 其他重要運算子 | ||
| + | |||
| + | ==== 條件運算子 ==== | ||
| + | (? :): 唯一的三元運算子 (ternary operator),用於簡潔的條件判斷式。\\ | ||
| + | < | ||
| + | |||
| + | ==== sizeof 運算子 ==== | ||
| + | 返回運算元的大小 (以位元組為單位)。\\ | ||
| + | < | ||
| + | |||
| + | ==== 指標運算子 (*, &) ==== | ||
| + | 用於處理記憶體位址和指標。\\ | ||
| + | < | ||
| + | &: 位址運算子 (Address-of operator),返回變數的記憶體位址。 | ||
| + | *: 解參考運算子 (Dereference operator),訪問指標所指向的值。 | ||
| + | </ | ||