C_and_CPP 板


LINE

※ 引述《giveatry (new life)》之銘言: : ※ 引述《giveatry (new life)》之銘言: : : #include <stdio.h> : : int main(){ : : int* c = 1; : : printf("c++ is %d\n", c++); : : printf("c is %d\n", c); : : return 0; : : } : : 印出來的結果 : : c++ is 1 : : c is 5 : : 為什麼會這樣呢ꄊ: : 謝謝 : 我改成這樣的時候 : #include <stdio.h> : #include <stdlib.h> : int main(){ : int* c = (int*)malloc(sizeof(int)*1); : *c = 1; : printf("c++ is %d\n", c++); : printf("c is %d\n", c); : return 0; : } : 印出來的結果是 : c++ is 159821832 : c is 159821836 : 改成這樣的話,好像就是印記憶體位置了 : 愈搞愈迷糊了@@ 雖然我不常寫c不過看好像沒人要理你這個問題 我就來點你一下好了,先說~我是看你的實驗說故事的 你第一個宣告指標c int* c=1; 是把指標c指到1這個位置了 而 printf("c++ is %d\n", c++); 印出了c這個指標位置1 再移到下一個位置 不過你宣告的是int這個有4個byte,所以跳4,因此你看到的+4是這邊來的 第二個int* c = (int*)malloc(sizeof(int)*1); 這個是你叫電腦幫你選出一個有一個int大小的位置,把c指向那邊 電腦給你159821832這個位置,接下來你又作了一樣的事情 所以呢,從頭到尾差別只有 手動選號(1) 跟 電腦選號(159821832) 的差別而已 不過手動選號是很危險的 因為你不知道這號碼有沒有人在使用,除非你很確定 否則不要作這樣的動作 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.26.253
1F:→ cheinhun:仔細看了一下推文..victortom大大好像解釋一樣的東西XD 06/28 02:15
2F:→ Cloud:應該是原PO的癥結在於他不曉得 int* c=1; 06/28 09:06
3F:→ Cloud:printf("c++ is %d\n", c++); 也是在印出位置 06/28 09:06
4F:推 giveatry:感謝,我終於知道我的問題在哪裡了…問題在int* c = 1 06/28 10:05
5F:推 giveatry:若是*c = 1,是指把c所指的值設為1。但是int*c =1和 06/28 10:18
6F:→ giveatry:*c = 1意義完全不同,我就是這樣搞混了… 06/28 10:18
7F:推 in09:我怎麼覺得你還是不懂耶 "int* c = 1 *c = 1意義完全不同"?? 06/28 14:46
8F:→ giveatry:int* c = 1是宣告一個int指標並將其指向位址1 06/28 15:09
9F:→ giveatry:*c = 1是把指標c所指之值設為1,難道我又誤解了嗎? 06/28 15:09
10F:推 VictorTom:int *c = 1; 宣告指標變數c並使初值為1(指向1這個位址) 06/28 15:22
11F:→ VictorTom:*c = 1; 指標c目前所指的位址給定新值為1(被指位址給1) 06/28 15:23
12F:→ VictorTom:Ex: int *c = 0x0100; *c = 0x0010; 06/28 15:25
13F:→ VictorTom:則c會指到0x0100這個位址, 並讓這個位址上的值變0x0010 06/28 15:25
14F:→ VictorTom:PS. 未確認的位址胡亂給值很危險的 XD 06/28 15:27
15F:推 giveatry:v大,所以我推文8,9行的理解看起來和你是一樣的? 06/28 17:13
16F:→ cheinhun:你沒誤解啦 老實說要是我我也不會知道是那樣 我從來不會 06/28 20:43
17F:→ cheinhun:像你那樣寫 因為pointer通常拿來動態宣告一個陣列或是寫 06/28 20:44
18F:→ cheinhun:類似linked list這樣的東西 你應該也只是試驗而已 寫程式 06/28 20:44
19F:→ cheinhun:就是這樣啊 精神很不錯的 06/28 20:44
20F:→ cheinhun:啊 還有call by reference也是pointer蠻重要的概念 其實 06/28 20:54
21F:→ cheinhun:爬文看看 上面很多人討論過一樣的東西唷 06/28 20:54
22F:推 VictorTom:其實我只是搞不清楚到底誰了解的情況怎麼辦所以乾脆完整 06/28 23:39
23F:→ VictorTom:重推一次而已....XD 06/28 23:39







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP