雖然 Linux 環境下的 GDB 功能強大,但在圖形化介面與易用性上,Visual Studio 系列(VC++6.0 至 VS2012)仍是 C 語言初學者與開發者的最佳選擇。VS 提供直觀的監視視窗、即時運算視窗與呼叫堆疊,讓指針、記憶體位址與變數值一目瞭然。筆者建議:先在 VS 中深入理解 C 指針機制,待技術成熟後再轉戰 Linux 手寫程式碼。
需注意:Windows 平台支援部分非標準語法(如 scanf_s、_tmain),移植至 Linux 時需改用標準 C 庫函式;另編碼差異(GB2312 vs UTF-8)易導致亂碼,跨平台開發務必處理字元編碼。
.c


#include <stdio.h>
int main() {
int a = 1;
int *b = &a;
printf("%p", (void*)b); // 使用 %p 輸出位址
return 0;
}
在 printf 行設中斷點(F9),按 F5 進入偵錯。開啟「偵錯」→「視窗」→「監視 1」,輸入 b、*b、&a,即可觀察指針值、指向內容與變數位址關係。


#include <stdio.h>
int main() {
char *c = "abcama1w"; // 指向唯讀資料區
char *d = c;
printf("%s", d);
return 0;
}
監視視窗中輸入 c、d、*c,可見兩指針指向相同記憶體位址,內容為字串常數。

#include <stdio.h>
int main() {
char c[12] = "abcama1w"; // 陣列在堆疊分配
char *d = c; // 陣列名退化為首元素位址
printf("%s", d);
return 0;
}
對比陣列 c 與指針 d 的記憶體佈局:陣列佔用連續 12 位元組儲存字元;指針 d 僅儲存首元素位址。監視視窗輸入 c、&c[0]、d 驗證三者數值相等。



*ptr+1、arr[3])動態求值i == 5 等運算式掌握 VS 調試工具,C 指針的「位址傳遞」、「間接存取」、「記憶體佈局」等核心概念將具體化、可視化,為攻克鏈結串列、樹狀結構等進階資料結構奠定堅實基礎。