看板 C_and_CPP 關於我們 聯絡資訊
關於指標 & 記憶體位置的一些概念 幫我看看有沒有理解錯誤 假設 int a = 123; int *ptr = &a; 我想印出 a 的記憶體位置 printf("%p", &a); 這樣是對嗎 ? 那如果 printf("%p", ptr); 它會印出 ptr 所指向的 a 的位置 而非 ptr 本身的位置 要印出 ptr 本身的位置 需要用 printf("%p", &ptr); 對吧 ? 為了證實自己的理解 就簡單測試了一下 http://codepad.org/XG6h3ARZ 貌似沒錯 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.221.54
mabinogi805:沒記錯的話 的確是這樣 05/19 15:17
xatier:無誤 05/19 15:45
stupid0319:int *ptr 我會寫成int* ptr,這樣比較好理解 05/19 16:01
leiyan:int*ptr不好嗎QQ 05/19 16:06
purpose:int* ptr1, ptr2; 05/19 16:20
xatier:我覺得 int *ptr 比較好理解阿,當你有多個 pointer 的時候 05/19 16:31
xatier:不過這個都可以啦,習慣因人而異 05/19 16:32
uranusjr:int *ptr 這種形式最大的好處其實是防呆避免 05/19 16:37
uranusjr:int* ptr1, ptr2 這種程式碼, 不過其實高興就好 05/19 16:38
loveme00835:明明星星就是要跟著變數... 05/19 18:54
diabloevagto:5F的ptr1是指標,ptr2是普通變數吧?*跟著名稱比較好 05/19 22:29
wowtiger:我個人反而不推薦宣告一行就做完 就不會遇到 * 前後問題 05/19 22:42
stupid0319:int*是一個type, ptr1 ptr2 都是int* 類型 05/19 23:11
james732:我覺得 int *p = 0; 跟 *p = 0; 的差別實在很難講清楚 05/19 23:15
purincess:樓樓上s大..int* ptr1, ptr2 這樣ptr2是int不是int* 05/20 00:03
stupid0319:先typedef int* pint;pint ptr1,ptr2;這樣呢 05/20 00:11
purincess:這樣就都是int*~~ 05/20 00:15
purpose:int *p = 0; 定義新變數及其初值 05/20 02:22
purpose:*p = 0; 執行運算。需看運算子優先權,需看有無 overload 05/20 02:24
james732:我自己懂,不過解釋的時候常常覺得很講難XD 05/20 11:25
stupid0319:那int *ptr[10]; 又要怎麼解釋@@? 05/20 11:37
purpose:解釋成陣列 [10],不管是運算式還是變數宣告,家世背景還 05/20 12:15
purpose:是外貌才華,指標參考都不如陣列,除非加上小括號 05/20 12:16
loveme00835:.... 第一次看到有人把定義變數語法跟陣列相提並論的 05/20 21:59
loveme00835:陣列跟函數同國, 跟平常的定義int用不一樣語法ok? 05/20 21:59
purpose:定義陣列與定義int的語法,不就只差在[],不一樣是指? 05/20 22:22
cobrasgo:我相信樓上兩位講的東西是不一樣的XD 05/21 00:51
cobrasgo:p兄應該是是講優先權的東西 05/21 00:52
purpose:c大英明 05/21 16:38