[ 近期學西班牙文的心得 ]
上個禮拜搬家,在房間一隅整理出工作閱讀的區域,陽光充足,兩株寶貝植物長得很好,每天早上起床看到都很開心。
現在早上固定自學十五分鐘到半小時的西班牙文,一直都很想學這個語言,因為對西班牙的藝術與文化很感興趣,也一直對旅行中南美洲有所憧憬。前幾天和作家蔣亞妮錄 Podcast,她問我不能出國的這一兩年都在幹嘛,我說除了照常工作外,就是學語言了,當作為下一場旅行做充足的準備吧,這樣想,感覺就好了一點。
跟大家分享我學西班牙文的一些好用工具:
1/ 首先是 Duolingo,這個 App 設計得非常好,像遊戲,有獎勵和進度,還可以和朋友連線,循環重複內容的教法也非常棒(但也有朋友覺得沒完沒了很煩),不過照我以前學外語的經驗,如果身邊沒有語言環境,的確就是要靠不斷重複同批字句才能產生印象。 Duolingo 的教法很重實用和口語,短時間內就可以學會很基本的日常會話,讓人對學語言產生習慣和自信。
2/ Duolingo 是很好的入門和日常練習,但是我覺得要加快進步的速度,不能只依靠它。我另外還會使用 SpanishDict 這個 App,它是一種基於字典的自學程式,每一個字詞都有真人發音,也有很多例句可以學習,動詞的話也有完整的動詞變化表可以對照。每一天,它都會給你一個 word of the day,一天學一個新單字,同時閱讀該單字的相關例句,延伸對其他字詞造句的印象,久而久之累積起來的成果,十分可觀。
3/ Tandem 是一個語言交換的 App,上面有來自世界各地的人,想要學習各式各樣的語言。我發現很多西班牙母語者都想學英文,也有想學中文的,遇過幾個語伴都還滿友善的,沒有什麼奇怪的事情發生。但是,我覺得 Tandem 麻煩的就是不能直接馬上學語言,畢竟大家都不是專業老師出身,還是要像一般陌生人剛認識那樣,寒暄問候、客套聊天,我覺得其實還滿浪費時間的,所以沒有用多久就放棄了。
4/ Living Language Spanish:Living Language 是一個語言學習系列書,除了西班牙語外,也有教義大利語或俄語等等。這套書在誠品書店就有賣,一套書分為基礎、中級、進階三冊,循序漸進,另外有 CD 也可以下載,對照書裡的不同部分聆聽練習,內容非常紮實。我覺得 Living Language 是我用過最好的語言學習書,我兩年前靠它從零自學,最後在義大利考過義大利語 B1 檢定(不過當然除了讀書外,也有很多日常中的練習幫助)
5/ Podcast、影集......:學新的語言時,我盡量讓自己沈浸在那個語言之中,例如學英文的時候,就交了很多外國朋友,每個禮拜和他們出去玩,久而久之英文就練起來了。現在學西語,我會去聽 Duolingo 在 Spotify 上面的西語 Podcast 節目,也是做得非常紮實,內容豐富,也很照顧到學生的需求;除此之外,我也會上 Netflix 看西語的影集或節目,最近在看一個類似西班牙文版的 Too Hot to Handle,內容很無腦,剛好可以專注在語言學習上。
✨歡迎追蹤我的 IG:abby_chao_
https://www.instagram.com/abby_chao_/?hl=en
✨2021 散文新書《寂寞作為一種迷人的慢性病》
誠品: https://bit.ly/3ryMu8N
誠品【限量簽名版】: https://bit.ly/36ZO8a5
誠品蝦皮【限量簽名版】:https://bit.ly/3i2sb0y
#spanish #duolingo #language #learning #西班牙文 #語言學習 #livinglanguage #apartamento #plants
同時也有4部Youtube影片,追蹤數超過7萬的網紅在地上滾的工程師 Nic,也在其Youtube影片中提到,## 影片觀看說明 由於問題較多,大家的問題也可能是你的問題,建議可以先閱讀下方的「問題總匯」區,找到時間碼 Time code 之後跳轉到自己想聽的部分,會比較有效率哦 本影片 Q&A 留言是抓取 【2020 年度回顧! 成為 Team leader? 業外收入增加? 技術能力成長? (第一...
「handle程式」的推薦目錄:
- 關於handle程式 在 Facebook 的精選貼文
- 關於handle程式 在 貓町媽媽 親子 玩樂 扮靚日誌 Facebook 的最佳解答
- 關於handle程式 在 Nana 媽媽 × 藍哥。璦妹。礥弟 Facebook 的精選貼文
- 關於handle程式 在 在地上滾的工程師 Nic Youtube 的精選貼文
- 關於handle程式 在 コンテンツ全部見東大生【映画・ドラマ考察】 Youtube 的最讚貼文
- 關於handle程式 在 I’m Spring Youtube 的最讚貼文
- 關於handle程式 在 [心得] 轉型、指標、enum 跟handle - 看板C_and_CPP 的評價
- 關於handle程式 在 應用程式連結主機- 圖形API 的評價
- 關於handle程式 在 MFC about handle message - c++ - Stack Overflow 的評價
- 關於handle程式 在 Flutter 023 - Domain Error Handle (part7) - CHUPCCA 的評價
- 關於handle程式 在 什麼是SameSite? - GitHub 的評價
- 關於handle程式 在 Value vs Handle 類| 他山教程,只選擇最優質的自學材料 的評價
handle程式 在 貓町媽媽 親子 玩樂 扮靚日誌 Facebook 的最佳解答
#邊玩邊學 #STEAM
#ApitorRobot X 第二代 STEAM編程學習機械人
小火子經常都嚷著想要機械人,
趁暑假期間,不如我們一起親手砌一個😎
有關STEAM的產品已經不是第一次接觸,不過今次Apitor Robot X 第二代 STEAM編程學習機械人外觀好吸引,而且以積木組裝,感覺上小朋友更易handle!
不過包裝列明適合8歲或以上,
所以找來了最強的後盾 – 火子爸作為軍師👨👦
🌈玩具開箱
盒內包括說明書,與獨立包裝的積木。由於Apitor Robot可以砌出多達12款的造型,所以每包積木都只是相類似的放在一起,並非跟步驟分類,找起來可能有點花時間,但找積木這個任務找小孩幫忙正好!
盒內的說明書可以砌出跑車,如果想砌其他造型可透過QR code下載 app就可找到不同積木造型的說明書,那我們就來挑戰超過100步驟的機械人!
💜培養耐性及解難能力
這盒玩具對小火子來說的確有點難度,要讚一下火子爸教小火子看說明書,小火子小心翼翼地也完成了很多個步驟。 一直讚同積木是對小朋友很有益的玩具,除了可訓練思考,耐性,也可增加解難能力。
不過小朋友的專注力是有限的,花了大概兩個小時,完成了三分一的步驟,餘下來的就辛苦爸爸了。
🌏配合APP遙控機械人+學編程
共用了約5小時,機械人終於誕生了,真的超有型呢!小火子急不及待用APP遙控機械人,
機械人的移動頗流暢,也具速度感!
我們也試過用機械人撞跌玩具超人,都OK呢!
APP除了可充當機械人的遙控,也有編程教學及可運用編程而令機械人移動,發音及改變外觀。
STEAM教育已是未來教學趨勢:S(科學)、T(科技)、E(工程)、A(藝術)、M(數學),而小火子在小一的電腦科及他日常最愛玩的game也有涉及編程,所以這又是一個好好的學習機會。
玩後感:
🔸積木高質而製成品耐玩,性價比高;
🔹最抵玩的玩法是拆散再砌其他造型(當然就需有推倒重來的勇氣與時間);
🔸大孩子玩更適合,爸媽可以更省心;
🔹雖然可錄音播放音效 ,但聲音由iPad發出而非機械人,感覺有點失色;
🔸外觀上的燈效變化也不夠明顯,如可改善就會更吸引。
⭐️第二代升級版Apitor Robot
✔️全新造型:600片積木打造恐龍、直升機…12+種造型
✔️全新玩法:遙控、聲控、距離障礙物、RGB顏色感應
✔️全新APP:免費入門教學、導入主流程式 Scratch 3.0
🌏了解更多及產品傳送門: https://bit.ly/2VZQ2oW
✨溫馨提示: 01積分可以喺01mall當錢使,抵扣現金高達50%
#ApitorRobot #STEAM #編程學習機械人 #暑期活動
#親子 #玩具推介 #貓町媽媽
handle程式 在 Nana 媽媽 × 藍哥。璦妹。礥弟 Facebook 的精選貼文
坐 office 坐得多,個人全日唔郁,反而好容易攰🥱。為咗自己嘅健康著想,我每日食完 lunch 都會出去行下🚶🏻♀️。
琴日搵到一個 梁麗翹 Nicole Leung 介紹既手機應用程式,只要袋住個電話,就可以紀錄每日運動量、步數,提醒自己行多d、健康d🥰。最吸引係可以賺分換禮物🎁,咁就更有推動力。
玩咗一日都幾易 handle,等我每日繼續努力先💪🏻。
#瘦身 #運動 #健康 #大家減齡 #邊瘦邊贏獎賞
handle程式 在 在地上滾的工程師 Nic Youtube 的精選貼文
## 影片觀看說明
由於問題較多,大家的問題也可能是你的問題,建議可以先閱讀下方的「問題總匯」區,找到時間碼 Time code 之後跳轉到自己想聽的部分,會比較有效率哦
本影片 Q&A 留言是抓取
【2020 年度回顧! 成為 Team leader? 業外收入增加? 技術能力成長? (第一次蒐集 Q&A)】https://youtu.be/BGaDN9wxbKE
## 影片中提到的專案
簡單用 React 撰寫的留言爬取篩選功能,可以自己抓去玩
https://github.com/niclin/youtube-comment-filter
## 問題總匯
00:00 開場
01:26 QA-1 - 林天寸
一直很喜歡妳的頻道,不單單是因為工程師,當然也有部分原因是自己也是走工程師這條路的。
前一年2020年開始,其實是我剛轉職工程師的第一年,在滿多地方都遇到不小的問題,在troubleshooting上面也是有許多瓶頸的。
後來除了白天上班,下班看書跟休息,偶然間看到你的影片[工程師如何自我進修],才開始慢慢用計畫的方式取代橫衝猛幹。
不得不說,規劃時間真的是比起技術性的功力還更有成效。因為它讓你適時的放鬆跟加強,然後在工作上面才更有長進,雖然很幹話,但我2020的下半年是這樣做的。
目前在準備考取網路管理的證照CCNA,計畫是走network這一塊,還有很多要磨練的。希望也能多看你產出跟network的影片,這是私心話啦,哈哈。
02:57 QA-2 - 仔仔
1.學程式會建議從前端或是後端哪個開始學會比較好?
2.一開始投履歷如何判斷一家公司是可以成長的,而不是進去3,5年後還是那個跟剛進去程度相差不遠的自己差不多
3.跟程式相關的產業有很多(像是製造業到博弈),可以請Nic分析一下各產業的狀況嗎?以及進去各產業前須要具備哪些程式語言或能力?
4.投履歷時看到一些公司列出所需程式語言和工具一大堆,是不是代表你沒完全具備就不要投履歷了,還是可以請Nic給個意見哪些部分還是可以投看看
5.都說工程師又宅又不會說話,為什麼Nic可以交到女朋友?
10:40 QA-3 - ANDREW NG KAR EARN
如果当写编程语言遇到瓶颈,有什么方法可以有效地避免自己陷入钻牛角尖的情况?
11:46 QA-4 - JS Lin
如果NIC現在選擇能馬上精通一項語言會是哪個?會想用來做什麼PJ?
13:13 QA-5 - Rick0
成為 team leader 後無法直接在技術上有更深入的研究和突破,這樣的變化是否值得?
是否會擔心這樣在技術上跟不上其他人,甚至被下屬看輕呢?
14:39 QA-6 - Henry蔡
因為最近是寒假期間,
我開始考慮下學期的修課,
想請教nic大大,
應該在有什麼樣的基礎上,
開始學design patterns?
我目前是碩士生,
大學非資工本科,
學過Python,
也跟過一些網路影片實作過Flask+PostgreSQL,
大學學過資料結構演算法,
但不到得心應手的程度...
16:07 QA-7 - 黃柏瑋
如何同時Handle好好幾件事
我怎麼覺得上班,然後下班假日寫寫side project後就沒啥時間了🤔🤔🤔
17:24 QA-8 - 乾太
我想問一下這年頭轉行斜槓 VTuber 還有沒有搞頭A?
18:10 QA-9 - uuu06222
之前開始關注你有知道你有面試過人的經驗, 想問一下站在面試官的角度...
面試官會不會比較注重作品需要呈現那些東西, 或是有沒有什麼禁忌是不能碰的嗎?
20:07 QA-10 - Joery Lin
想請教您對於對於給你很多成長和照顧的公司,倘若您有一個更好的機會,無論薪水或未知挑戰都大於現在公司。
您將如何做選擇,或許現在公司會給你加薪留下你。
因為自己曾放棄了許多機會
21:37 QA-11 - YangTing Zheng
Q1: 想問通常一個產品開發的週期都多長呢?負責維運和開發的工作內容是否會差很多?
Q2: 想請您簡單介紹一下資工系學生的出路/工作內容?(如PM.SA.DBA.PG.RD.MIS…或是還有其他的?)
24:16 QA-12 - RTB
Hello World
24:18 QA-13 - Barry
目前是公司MIS 很想轉職成後端工程師,但在面試上面都都時常失敗
常常在問技術關卡時就被問倒了,總覺得 要準備的東西非常的龐大
毫無準備的頭緒,總覺得一直寫side project也不是辦法
26:49 QA-14 - 因地制夷
想請教Nic 有在做投資嗎? ex 股票 想聽一些投資心得
27:13 QA-15 - 比歐
想請教 Nic 大,
在之後的工程師生涯中之後有甚麼規劃或想法嗎?
例如:開發產品創業,或是開班授課、轉做顧問之類的。
28:14 QA-16 - yongming jia
请问新手如何学编程,学完去做什么?怎么自己创业?谢谢🙏
29:33 QA-17 - Minghao Chang
是否能請您推薦用來開發的筆電?(正好最近要汰換電腦),想從今年開始養成寫side project的習慣,謝謝。
30:31 QA-18 - Guan Jun Chen
想知道像Nic這麼厲害的工程師,年薪大概落在哪裡
30:46 QA-19 - Sheng Jiang
想請問Nic,如果非資工背景但是對寫程式有熱情,想轉職當軟體工程師,會建議如何起步?
補充:像是什麼樣的人適合自學,什麼樣的人適合去補習,或者補習跟自學的情況各有哪些優劣?
謝謝Nic
## 結尾
31:49 感想
喜歡影片的話!可以幫忙點個喜歡以及分享、訂閱唷!😘
━━━━━━━━━━━━━━━━
🎬 觀看我的生活廢片頻道: https://bit.ly/2Ldfp1B
⭐ instagram (生活日常): https://www.instagram.com/niclin_tw/
⭐ Facebook (資訊分享): https://www.facebook.com/niclin.dev
⭐ Blog (技術筆記): https://blog.niclin.tw
⭐ Linkedin (個人履歷): https://www.linkedin.com/in/nic-lin
⭐ 蝦皮賣場: https://shopee.tw/bboyceo
⭐ Github: https://github.com/niclin
⭐ Podcast: https://anchor.fm/niclin
━━━━━━━━━━━━━━━━
✉️ 合作邀約信箱: niclin0226@gmail.com
#QA #工程師 #在地上滾的工程師 #前端 #後端 #轉職
handle程式 在 コンテンツ全部見東大生【映画・ドラマ考察】 Youtube 的最讚貼文
◇『Too Hot To Handle season1』英語版予告
https://youtu.be/2JgPJpgnut4
◇テラスハウス感想プレイリスト【毎週火曜22時ライブ】↓
https://www.youtube.com/playlist?list=PLjS2ZqlvRTFSwEqEX2cnf7xlZ09ZJzn9T
◇6つの動画配信サービス、どれがおすすめ?【Netflix,Amazon プライムビデオ,Hulu,Paravi,ディズニーデラックス,U-NEXT】
https://youtu.be/paSx78XorSk
◇ 【永久保存版】Amazonプライムビデオおすすめ映画50本
https://youtu.be/0gYtgQYzsgs
◇ Netflixのおすすめ映画・ドラマ17本
https://youtu.be/jsLXFOeS3dY
☆コンテンツ全部見東大生とは?
大島育宙(おおしま・やすおき)。東京大学法科大学院在学中の芸人。タイタン所属のお笑いコンビ・XXCLUBのメンバーでもある。「ドラゴン堀江」「Qさま‼︎」「さんまの東大方程式」「ネプリーグ」「クイズ雑学王」「ウチのガヤがすみません‼︎」「潜在能力テスト」他、TV・ラジオの出演多数。このチャンネルでは映画・ドラマの考察、書評、受験生向けの勉強の話などをしています。
◇よろしければぜひチャンネル登録お願いします。
https://www.youtube.com/channel/UCMutK6zOvD0EJuudaK9kOZw
◇映画レビュー再生リストです。気になる作品を探してみてください!どんどん増えます!
https://www.youtube.com/playlist?list=PLjS2ZqlvRTFRUS4fFRlaEyVZkR2wCsIgM
☆『パラサイト 半地下の家族』レビュー①
https://youtu.be/u7ePkGKIZz8
☆『犬鳴村』レビュー
https://youtu.be/ywvw_gFEuq8
☆『アナと雪の女王2』レビュー
https://youtu.be/4XGJCmh6lBE
☆『ジョーカー』レビュー
https://www.youtube.com/watch?v=nomfXI4xJ0A
☆『トイ・ストーリー4 』レビュー
https://youtu.be/WfoaoHxGuZU
☆『IT/イット THE END』レビュー
https://youtu.be/p-cuBUVXLjw
☆『天気の子』レビュー
https://youtu.be/AatikSXXChA
大島育宙(XXCLUB/コンテンツ全部見東大生)Twitter→
https://twitter.com/zyasuoki
「@zyasuoki」でも出ます!
handle程式 在 I’m Spring Youtube 的最讚貼文
Hi我是春春
如果你喜歡我的影片歡迎訂閱+按小鈴鐺
我們下支影片再見!
𝐈𝐧𝐬𝐭𝐚𝐠𝐫𝐚𝐦 ▏https://www.instagram.com/spriing____/
合作邀約 ▏springoh158@gmail.com
∞∞∞∞
可以的話,幫我看完廣告:)
不略過能有微薄的廣告收益
補助我拍片幕後資金
也是支持我繼續努力的動力之一
▸我隨意講講話
💰點我下載註冊馬上賺100元獎勵金
https://app.shopback.com/twn?raf=ypauly&slug=referred-signup-bonus
💰影片中提到的現金回饋小幫手(Chrome擴充程式)
https://lihi1.com/ItpgC
今天一起來逛PAZZO
雖然我好像有點講話太直😂💦💦
但我是針對我自己身材要避雷的點啦
因為身材不完美就會比較多毛🥺
沒有在針對品牌或是誰哦嗚嗚
我有很多人生命定款也是在pazzo買的
而且他們每個小編都又美又瘦的(真心覺得)
這樣的網購實況眉角分析
適用於任何一家
希望也可以幫助到跟我身材類似的人喔
大家都能當網購柯南ㄌ
😳
影片後面還有拆開實穿喔~~千萬別錯過哩🍋
而且以CP值來說他們家真的很讚
雖然少女風格主要
但我偶爾還是會在那邊挖寶
特別喜歡&in thing系列
🤍🖤🤍
話說影片不小心又太長了~嗚嗚嗚
但一樣是真心100%力作哈哈
建議可以跟之前的網購不踩雷上集一起看
完全大補帖等級(應該吧哈)
傳送門: https://www.youtube.com/watch?v=RXwRT1gwbWc&t=16s
#網拍不踩雷 #下半身胖女孩 #shoppinghaul
▸商品資訊
-第一套-
個性女孩寬袖毛衣(黃小米聯名款)
https://www.pazzo.com.tw/market/n/16308?c=36324
PAZZO 牛仔褲已下架
JW PEI 蛇紋腋下包
https://www.jwpei.com/collections/shop-all/products/eva-shoulder-bag-natural-snake-embossed
-第二套-
Oversize寬鬆V領襯衫
https://www.mercci22.com/market/n/1324?c=2817
時髦豹紋側開岔中長裙
https://www.pazzo.com.tw/market/n/16236?c=36158
Charles&keith(小CK) 藍色小包
網路搜不到QQ,我今年過年時在華泰買的
NEW BALANCE 530 奶茶米色
-第三套-
清新格紋反摺袖襯衫
https://www.pazzo.com.tw/market/n/16045?c=35800
單釦顯瘦九分西裝褲
https://www.pazzo.com.tw/market/n/16753?c=37279
短版風衣外套
https://shopee.tw/product/184656015/7616450843?smtt=0.0.9
-第四套-
小歐膩款麻花針織背心(附腰帶)
https://www.pazzo.com.tw/market/n/16747?c=37267
韓國字母T
https://shopee.tw/product/184656015/5916456609?smtt=0.0.9
PAZZO 西裝褲 已下架
JW PEI灰綠色鱷魚紋包
https://tw.jwpei.com/collections/shop-all/products/copy-of-the-fae-top-handle-bag-sage-green-croc
▸關於我
身高160
體重50 51(上身穿S,下身穿M)
乾性肌膚
▸這支影片使用設備
CANON M50
▸小提醒
影片如有任何收費內容
我會在標題&資訊欄標記出來
沒有就不是「專屬合作廣告」
更沒有給品牌端過稿修改
是第一手真實分享呈現:)
這樣以示我對讀者負責的公正公開
FTC: This video is sponsored by ShopBack
handle程式 在 應用程式連結主機- 圖形API 的推薦與評價
應用程式連結主機是一組不同應用程式連結的包裝函式。 ... $e->getMessage(); exit; } $graphNode = $response->getGraphNode(); /* handle the result */ ... <看更多>
handle程式 在 [心得] 轉型、指標、enum 跟handle - 看板C_and_CPP 的推薦與評價
看到上面我那篇回文下面討論的盛況(?)
再加上這篇上面的 enum 那篇文章
我想我要來講一些寫這麼多年程式以來我所認知到的東西了
不過因為東西還不少標題有點難下 只好這樣把要講的東西的關鍵字拿上來排 XD
---
說到底 一支程式編成二進位碼之後
不管程式裡到底寫了些什麼高階功能 最終終究是變成二進位的零與壹
到了這個層級一個值究竟會被拿去做什麼運算其實沒人會管
差別只在於這個運算跟它的結果對於要來讀取這個值的人/機器來說代表什麼意義而已
那麼一支程式裡 變數的"型別"其實就只是代表著
「這些零與壹要怎麼讀 以及它們要怎麼運算」的記號而已
因此有些操作對有些型別的變數來說沒有意義
例如拿一個指標去乘上別的東西 這種操作除非人為定義 不然它怎麼看都不會有意義
(這裡先不談一些程式語言理論裡的那種「型別」
那個是比較抽象一點的東西 不過不是這裡想聊的)
但是有的時候 我們為了要能讓一個某型別的值使用另一種型別的運算
必須要在各種型別之間進行轉換
(也許是只有另一個型別才能做某些事 也許是另一個型別提供了不一樣的限制等等)
這個想法就是產生高階語言裡稱做「轉型」這個操作的原始動機
但是說起使用另一種型別的運算
以機器語言/組合語言裡的角度來看
直接把這些位元的排列拿去做另一種運算也是一種「使用另一種運算」
但以高階語言的角度來看 這其實就成了位元意義上的轉變
由於值也可能一併改變了 所以通常為了跟上面那種意義的轉型分別
會有「強制轉型」、「硬轉」等等說法存在
也就是說 這兩種「轉型」在語意上是很不一樣的概念
C++ 裡提供了明確指示這兩種轉型的語法
前者稱做 static_cast 後者稱做 reinterpret_cast
(以下為行文方便我就用這兩個字指稱這兩種轉型)
不過由於 C 語言只有規定抽象運算的關係
因此 C 語言裡的轉型當標準裡有指明時 它就是屬於 static_cast
C99 的標準裡 6.3 節的標題是 "Conversions"
https://port70.net/~nsz/c/c99/n1256.html#6.3
裡面規定的就是這些轉換的詳細規則
像是當一個 short 要轉型成 long 時要造成什麼樣的效果
一個 int 要轉型成 unsigned int 時要造成什麼樣的效果
一個 int * 要轉型成 char * 時要造成什麼樣的效果 等等
有些狀況這一條裡沒有提到 例如前面推文提到的指標轉型成 double
那種就是屬於不能轉型的狀況
之所以這些狀況不規定它能轉型是因為常理上不可能會有這種轉型的需求的關係
不過其中有幾項雖然有提到能夠轉型
但是轉型出來的結果卻明言「隨實作而定」(implementation-defined)
這種狀況之下就給了 reinterpret_cast 鑽空子的機會
因為隨實作而定的關係 如果在二進位層級上什麼也不做當然是最簡單的方式之一
因此在許多常見的實作上就會將這些狀況給定為 reinterpret_cast 了
這其中包含了我上一篇回文所回的那種狀況: 一個整數跟一個指標互轉 [6.3.2.3p5-p6]
那篇文章的狀況其實是這樣的
嚴格照標準來說的話 int 雖然能跟 xxx* 互轉 但互轉後不能保證會恢復原狀
能保證的只有一個: void * 轉成 intptr_t 再轉回 void * 會還原
所以我的回文裡提到的 #153 那行指定最嚴格符合標準的寫法其實是
*GMGID = (int)(intptr_t)(void*)GMG_ptr;
那要轉回來就也必須要
MF2KGMG_operator* GMG_ptr=(MF2KGMG_operator*)(void*)(intptr_t)*GMGID;
不過因為在 pc 上面 這些轉型大多都是被實作成 reinterpret_cast 的關係
所以就出現了偷懶寫法: 直接轉成最終型態
就只是這樣而已
gcc 的警告就是在告訴你「這可能不會產生你所想要的結果」
---
我在我那篇回文的推文裡拿了 https://tinyurl.com/3d487sk 這篇問答出來救援(?)
只不過看起來碰上的這個打者還是很堅持他自己的打法...
我引這篇的目的是這一段話 (第一個問答的答案)
※ 引述《https://tinyurl.com/3d487sk》
: 並不是所有機器都使用「平面記憶體模型」(flat memory model),可以把記憶體當
: 成一個巨大、連續的表格看待。除了標準(參考 N1256 6.2.5p27)規定的幾種狀況外
: ,不同型態的指標可以長得完全不一樣。最後,函式指標(function pointer)是另
: 一世界的東西,可以跟物件指標完全沒關係。並不是所有機器都把物件和程式碼都擺
: 在同一大塊記憶體裡面。
: 如果你測試發現一樣,那只是你測試的實作用同一種方法表示所有指標,請參考你作
: 業系統或機器的文件確認你的發現。世界上的確有實作用不同格式表示不同型態的指
: 標,不可攜的程式在那些機器上可能會出現嚴重的錯誤。(參考 clc FAQ 5.17 看實
: 際例子)
我個人相信這一段話已經足夠解決那篇的推文裡的爭端了
這段話裡講了許多事情:
1. 記憶體位址並不一定是由連續的數字所表示
2. 不同型態的指標可以有不同的表示方式
3. 存在一種"指標"可以跟其他的指標完全無關
4. 除非你的機器對這些有所說明, 不然擅自假設以上這些是如何就可能會出事
在我看來這幾條觀念正是許多可能寫過很多 C 的人仍然不足的
下面幾條問答順便回答了「指標跟指標之間可以任意轉型」的錯誤觀點 這就表過不提
---
至於我上面那篇 enum 的轉型
C++ 裡是這麼規定的: 一個 unscoped enum 可以轉成整數 但不能反之
(unscoped enum 如 enum {a,b,c}; 或 enum vowels {a,e,i,o,u};)
一個 scoped enum 則不能跟整數互轉
(scoped enum 如 enum class numbers {one,two,three};)
而我不太懂的是為什麼你想要用一個 void * 傳來傳去
直接傳一個 int 進去不行嗎?
或者既然已經 typedef 出來了 那傳入型態設為 eGOPLAYER_STATE 就好啦
這樣是最不會有問題的方式 if 裡面連轉型都不用轉
---
最後我想提一下上篇我提到的 handle 到底是什麼
handle 這個詞在程式設計中的意思是一個代表某資源的值
它可以有多種描述法 常見的如 unix 系統上的 file descriptor 它是一個整數值
實際上它是 os 內部一個已開啟檔案的結構陣列裡的某個位置的索引
這陣列的前三個會先行依序填入標準輸入、標準輸出、標準錯誤輸出
所以才會有標準輸入是 0, 標準輸出是 1, 標準錯誤輸出是 2 的結果
又例如我們熟悉的 FILE * 這是 C runtime library 所提供的對於檔案的 handle
那由於 handle 最常表示一個內部結構
所以它最常見的型式是指標 其次則是整數
有時為了抽象化 不讓使用者端知道那其實是個指標
因此常常會另定一個型態做為 handle 型態 它可以放入任何指標
C 語言的標準明定所有物件指標可以跟 void * 互轉 [C99 6.3.2.2]
所以這種 handle 型態就最常 typedef 成 void *
例如 Win32 API 就是這麼定義的:
typedef void *PVOID;
typedef PVOID HANDLE;
(ref: https://tinyurl.com/lmhgj27 )
當然也有直接定義成該種內部結構的指標的型式
例如 C++ 常見的 pimpl idiom 那個指標就是這種型式 兼具細節隱藏跟實作簡潔
這種型態的指標有一個特殊名詞叫 opaque pointer (不透明指標)
因此廣義來說 這些東西都可以視為 handle 的概念
我的上篇回文所回的程式即是使用這種概念來隱藏實作細節
只不過它選擇了用 int 表示一個其實是指標的 handle
這個選擇引入了指標跟整數互轉的不必要的麻煩而已
而 enum 那一篇之所以會想用 void * 我的猜測也只是想要試試看而已
只不過那裡的狀況跟 handle 是差了十萬八千里 硬用 void * 只是讓自己苦惱而已
---
想到要講的大概就是這些了
希望這篇可以對大家有一些觀念上的釐清
如果這篇有所誤謬也請不吝指正 :)
--
LPH [acronym]
= Let Program Heal us
-- New Uncyclopedian Dictionary, Minmei Publishing Co.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.10.216
... <看更多>