Fw: [問卦] 怎麼跟剛學程式的人解釋指標?
※ [本文轉錄自 Gossiping 看板 #1O3bPAMu ]
作者: holydc (のヮの) 看板: Gossiping
標題: Re: [問卦] 怎麼跟剛學程式的人解釋指標?
時間: Tue Oct 25 02:43:19 2016
※ 引述《zzzz8931 (肥宅)》之銘言:
: 寫過程式的人多少聽過指標這東西,
: 大家當初學的時候講者都怎麼介紹指標的啊?
: 剛踏入 C程式語言的堂妹問我這個問題真的不知道怎麼回,
: 請問怎麼跟剛學程式的人解釋指標?
「你是不是有什麼事情瞞著我」
下班一回到家,就看到 C++ 對我怒目而視
「怎麼會呢,我們之間是沒有秘密的呀」
我一邊換上居家服,一邊敷衍回應
「那你說說看這是怎麼回事」
C++ 打開我的 GitHub 帳號,指著我最近綠油油的一片
「我還想說你最近這麼愛 template,原來是跟 JavaScript 有一腿啊」
我頓時語塞,因為我近來的 contribution 的確集中在 JavaScript project
不過我隨即反擊
「我以前寫 OOP 的時候你也懷疑我跟 Java,妳到底想要我怎麼樣」
C++ 似乎是有點被我嚇到,愣了一下之後對我吼道
「我只是想要你這個不中用的廢物爭氣點!」
你這個不中用的廢物!
這句話彷彿對我的腦門揮下一記重擊
是啊,我就是廢物
code review 被電爆,pull request 也被 reject
更不用說還有做不完的 feature 和解不完的 bug
就連經過茶水間也聽到女同事在說「欸欸那個肥宅 holydc 好噁心喔」「真~的~」
於是,我感覺到頭腦裡有什麼東西斷掉了
失去理智的我把 C++ 推倒在 Visual Studio 上,並且把她的原始檔拘束起來
「你…你想做什麼!?快放開我!」
C++ 奮力抵抗,但是這樣卻更激起了我的獸性
「啊啊…妳果然還是最美的,我果然還是最愛妳了啊」
int main() {
我看著 C++ 毫無防備的進入點…main 函數,情不自禁地又聞又舔
「對了,我有準備一個可以讓妳很舒服的東西,這是妳姊姊 C 最喜歡的玩具」
「那是…啊」
void *a;
我冷不防地把指標放入 C++ 的函數裡面,受到刺激的 C++ 也不禁發出一聲嬌喘
*((char *)a) = -1;
「啊…等一下…嗯…指標還沒…」
C++ 一邊掙扎一邊說著,卻被我毫不留情地打斷
「哦,看來 1 byte 沒問題嘛,那就繼續放囉」※1
*((short *)a) = -1;
「嗚…不要…」
到剛才為止都還盛氣凌人的 C++,這時臉上泛著潮紅,表情開始扭曲
但是我當然不可能就此罷手
*((int *)a) = -1;
「已經…滿了…」
C++ 哀求著說
「少裝死了,void * 本來就塞得進 int,接下來才是重頭戲呢」※1
*((long long *)a) = -1;
「啊…啊…」
此時 C++ 已經只能呻吟,腰部因為強烈的刺激而反弓起來
「真是乖孩子,真虧妳能撐到現在呢」
我溫柔地擦去 C++ 額頭上的汗水
「接下來這個就是最後了」
struct Foo { char bar[1024]; };
「不可以不可以不可以不可以不可以,這個真的沒辦法…」
*((Foo *)a) = Foo();
「------------------------------!啊嘿」
只見 C++ 雙眼翻白,舌頭半吐,幾乎失去了意識
「哈哈哈,沒初始化的指標就變成各種形狀感覺怎麼樣啊」※2
「好過分…為什麼要做這種事」
C++ 哭喪著臉,身體止不住顫抖
「因為我想更加了解妳呀」
char *b = (char *)&a;
「…咦?」
「妳說說看我現在進到哪裡啦」
++b;
「嗚…」
「快說喔,不然我是不會停的喔」
++b;++b;--b;++b;++b;++b;--b;--b;++b;++b;--b;++b;++b;++b;++b;
「啊…嗯…是…return address…不能再進來了…拜託…」
C++ 極為羞恥地說出
「好吧,那今天就『到此』為止吧」
b = (char *)-1U;
「啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊」
我看著失神的 C++
胸口隨著紊亂的呼吸起伏,腹部還是不斷痙攣
四處飛濺的體液、唾液、汗液沾濕了整片文字編輯器
整個 IDE 充滿著淫靡的氣息
「我什麼都願意做…拜託你原諒我」
回過神的 C++ 氣若游絲,苦苦哀求
「好吧,那妳就讓我聽聽最悅耳的哭喊聲…」
delete _
「咦…騙人…不會吧…這樣真的會壞掉的!」
「那就壞掉吧」
delete a;
delete b;
return 0;
}
「不要------------------------------!」
「哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈」
「…dc」
嗯?什麼聲音?
「喂,holydc」
我睜開眼睛,尋找聲音的來源,原來是公司主管
「明天發表會要 demo 的版本弄得怎樣了?」
「我們能不能拿到新一輪的融資就看這次了,好好加油啊」
我揉一揉眼睛,看了看時間,凌晨兩點四十三分,Redmine 上面還有六張票
「好,繼續 debug 吧!」
※1 建置環境 Visual Studio 2015 on Windows 10 64-bit
sizeof(char) = 1
sizeof(short) = 2
sizeof(int) = 4
sizeof(long long) = 8
sizeof(void *) = 4
※2 其實早就會觸發 access violation 了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.195.150
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1477334602.A.5B8.html
→
10/25 02:43, , 1F
10/25 02:43, 1F
推
10/25 02:47, , 2F
10/25 02:47, 2F
推
10/25 02:49, , 3F
10/25 02:49, 3F
推
10/25 02:51, , 4F
10/25 02:51, 4F
推
10/25 02:52, , 5F
10/25 02:52, 5F
推
10/25 02:55, , 6F
10/25 02:55, 6F
噓
10/25 02:58, , 7F
10/25 02:58, 7F
推
10/25 03:00, , 8F
10/25 03:00, 8F
推
10/25 03:02, , 9F
10/25 03:02, 9F
推
10/25 03:04, , 10F
10/25 03:04, 10F
推
10/25 03:09, , 11F
10/25 03:09, 11F
推
10/25 03:10, , 12F
10/25 03:10, 12F
推
10/25 03:10, , 13F
10/25 03:10, 13F
推
10/25 03:18, , 14F
10/25 03:18, 14F
推
10/25 03:21, , 15F
10/25 03:21, 15F
推
10/25 03:21, , 16F
10/25 03:21, 16F
→
10/25 03:22, , 17F
10/25 03:22, 17F
推
10/25 03:25, , 18F
10/25 03:25, 18F
推
10/25 03:26, , 19F
10/25 03:26, 19F
推
10/25 03:30, , 20F
10/25 03:30, 20F
怎麼會呢 o'_'o
推
10/25 03:33, , 21F
10/25 03:33, 21F
推
10/25 03:35, , 22F
10/25 03:35, 22F
推
10/25 03:36, , 23F
10/25 03:36, 23F
推
10/25 03:37, , 24F
10/25 03:37, 24F
推
10/25 03:51, , 25F
10/25 03:51, 25F
※ 編輯: holydc (111.248.195.150), 10/25/2016 03:51:56
→
10/25 03:51, , 26F
10/25 03:51, 26F
推
10/25 03:52, , 27F
10/25 03:52, 27F
推
10/25 03:55, , 28F
10/25 03:55, 28F
推
10/25 03:59, , 29F
10/25 03:59, 29F
推
10/25 04:00, , 30F
10/25 04:00, 30F
推
10/25 04:10, , 31F
10/25 04:10, 31F
推
10/25 04:21, , 32F
10/25 04:21, 32F
推
10/25 04:42, , 33F
10/25 04:42, 33F
推
10/25 04:43, , 34F
10/25 04:43, 34F
推
10/25 04:49, , 35F
10/25 04:49, 35F
推
10/25 05:01, , 36F
10/25 05:01, 36F
推
10/25 05:53, , 37F
10/25 05:53, 37F
推
10/25 05:53, , 38F
10/25 05:53, 38F
推
10/25 06:01, , 39F
10/25 06:01, 39F
推
10/25 06:06, , 40F
10/25 06:06, 40F
推
10/25 06:15, , 41F
10/25 06:15, 41F
推
10/25 06:19, , 42F
10/25 06:19, 42F
推
10/25 06:50, , 43F
10/25 06:50, 43F
推
10/25 06:57, , 44F
10/25 06:57, 44F
推
10/25 07:00, , 45F
10/25 07:00, 45F
推
10/25 07:02, , 46F
10/25 07:02, 46F
推
10/25 07:09, , 47F
10/25 07:09, 47F
推
10/25 07:10, , 48F
10/25 07:10, 48F
推
10/25 07:20, , 49F
10/25 07:20, 49F
推
10/25 07:27, , 50F
10/25 07:27, 50F
推
10/25 07:28, , 51F
10/25 07:28, 51F
→
10/25 07:31, , 52F
10/25 07:31, 52F
推
10/25 07:34, , 53F
10/25 07:34, 53F
推
10/25 07:36, , 54F
10/25 07:36, 54F
推
10/25 07:43, , 55F
10/25 07:43, 55F
推
10/25 07:45, , 56F
10/25 07:45, 56F
推
10/25 07:48, , 57F
10/25 07:48, 57F
→
10/25 07:48, , 58F
10/25 07:48, 58F
推
10/25 07:54, , 59F
10/25 07:54, 59F
推
10/25 08:02, , 60F
10/25 08:02, 60F
推
10/25 08:21, , 61F
10/25 08:21, 61F
推
10/25 08:44, , 62F
10/25 08:44, 62F
推
10/25 08:45, , 63F
10/25 08:45, 63F
推
10/25 08:49, , 64F
10/25 08:49, 64F
推
10/25 08:50, , 65F
10/25 08:50, 65F
推
10/25 08:54, , 66F
10/25 08:54, 66F
→
10/25 08:55, , 67F
10/25 08:55, 67F
推
10/25 08:55, , 68F
10/25 08:55, 68F
推
10/25 09:06, , 69F
10/25 09:06, 69F
噓
10/25 09:10, , 70F
10/25 09:10, 70F
推
10/25 09:11, , 71F
10/25 09:11, 71F
推
10/25 09:12, , 72F
10/25 09:12, 72F
推
10/25 09:13, , 73F
10/25 09:13, 73F
→
10/25 09:16, , 74F
10/25 09:16, 74F
推
10/25 09:16, , 75F
10/25 09:16, 75F
推
10/25 09:17, , 76F
10/25 09:17, 76F
推
10/25 09:22, , 77F
10/25 09:22, 77F
推
10/25 09:24, , 78F
10/25 09:24, 78F
推
10/25 09:26, , 79F
10/25 09:26, 79F
推
10/25 09:27, , 80F
10/25 09:27, 80F
推
10/25 09:30, , 81F
10/25 09:30, 81F
推
10/25 09:34, , 82F
10/25 09:34, 82F
推
10/25 09:40, , 83F
10/25 09:40, 83F
推
10/25 09:43, , 84F
10/25 09:43, 84F
推
10/25 09:43, , 85F
10/25 09:43, 85F
推
10/25 09:44, , 86F
10/25 09:44, 86F
→
10/25 09:44, , 87F
10/25 09:44, 87F
推
10/25 09:49, , 88F
10/25 09:49, 88F
推
10/25 09:50, , 89F
10/25 09:50, 89F
推
10/25 09:51, , 90F
10/25 09:51, 90F
推
10/25 09:51, , 91F
10/25 09:51, 91F
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: kxdejavu (42.73.34.227), 10/25/2016 10:00:14
→
03/12 17:06, , 92F
03/12 17:06, 92F
推
03/15 21:29, , 93F
03/15 21:29, 93F