看板 Gossiping作者 holydc (のヮの)標題 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
※ 文章代碼(AID): #1O3bPAMu (Gossiping)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1477334602.A.5B8.html
→ avgirl: 3Q~END1F 10/25 02:43
推 pc240: 幹,U質好文4F 10/25 02:51
推 chuegou: 幹 不要寫髒code8F 10/25 03:00
推 otaku5566: 好!好!好! 我先看stack overflow打個幾槍好了13F 10/25 03:10
推 kaishu: 亂插指標 這樣對嗎XD19F 10/25 03:26
怎麼會呢 o'_'o
推 lokilin: 半夜醒來看到這篇也算是值得了23F 10/25 03:36
推 PRME: 阿嘿顏25F 10/25 03:51
※ 編輯: holydc (111.248.195.150), 10/25/2016 03:51:56
→ KNVSEOC: 寫程式就寫程式 不要欺負它啦XD26F 10/25 03:51
推 jjvh: 原來C不是媽媽嗎35F 10/25 04:49
推 ernova831: 幹你這樣要我以後怎麼好好的寫程式....38F 10/25 05:53
推 xatier: 我看了三小 XDDDDDDDDDDDDDDD40F 10/25 06:06
推 yash: 看不懂啊啊啊啊43F 10/25 06:50
推 olalo: 靠杯,深夜發這種殺小奇幻西斯文啦47F 10/25 07:09
推 Arbin: 不要亂玩C++辣XDDD49F 10/25 07:20
推 a7708101: 好像某些HG對話喔 QQQQQQ50F 10/25 07:27
推 WuZun: 為啥64bit void pointer大小會是4 byte?51F 10/25 07:28
→ brke: 雲端情人?52F 10/25 07:31
推 pzyc79: 好險我看不懂54F 10/25 07:36
推 kiwi0530: 你真的確定可以這樣教嗎?XD56F 10/25 07:45
推 abian: 不要玩程式 (?59F 10/25 07:54
推 NoteEdge: 這篇文組看不懂 好險高一老師有教c++60F 10/25 08:02
推 rioslo: 甘 看不懂啦65F 10/25 08:50
推 jtmh: 神!我喜歡XDD68F 10/25 08:55
推 hunder31: 攻三小 XDDDDDDDD69F 10/25 09:06
推 Aqery: 我到底看了三小71F 10/25 09:11
推 M013: 推推72F 10/25 09:12
推 pcchou: 這很猛wwwww80F 10/25 09:27
--