中翻葡hi列位德文版版友~ 因為比來被一句話影響 "你會多少語言,就會有若幹種生涯" 今朝一邊在學韓文 翻譯我,也簡直因為學韓文有了分歧 翻譯糊口, 所以迩來也開始鼓起想學另外一種語言的動機, 之前因為喜好鄭華娟的書,裡頭分享良多他在德國糊口的趣事, 是以對德國和德文有點樂趣,也盼望有天可以或許去海德堡玩:P (並且學法文好像太通俗XD) 這兩天在查台北學德文的資訊, 大師很保舉的德國文化中間,膏火其實太貴了>< 目前兩間在斟酌: 1.歐美亞 2.歐洲教育中間 版上歐美亞的評價毀譽參半讓我有點憂郁, 歐洲教育中間 翻譯則是很少評論辯論, 不知有板友可以分享一下嗎?? 兩間的教授教養體例、師資、上課氛圍等, 我自己算是蠻用功的人,功課城市乖乖寫, 但因為是學興趣,不進展給本身太大壓力, 希望是先生 翻譯教授教養是有趣輕鬆、上課氛圍活躍的, 然後我自己英文不算太好, 這兩間是不是都是德德講授? 對英語普通的人 翻譯說會費勁嗎?? (因為我是那種文法一定要搞到很懂才善罷甘休的人,怕英語解釋聽無:p) 或是列位有其他不錯的進修機構能保舉呢??。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 先感激列位回覆囉:) ps.但願盡早跟大家一路最先學習德文^^
- Jan 14 Sun 2018 10:34
[請益] 想最先學德文~補習班選擇?
- Jan 14 Sun 2018 02:08
一句愛妳說話輕@天際新聞台
- Jan 13 Sat 2018 17:45
[評論辯論] 台灣本土語言的現況與將來
卡納達語翻譯我感覺台灣 翻譯本土語言台語,客語,原居民語等, 其實正以下面四個階段發展趨勢在走 翻譯社 以我 翻譯母語台語來說: (1)原台語很遍及區域, 開始漸漸出現 (2)起頭有國台語瓜代的現象, (1),(2)老小皆可說台語 ; 緊接著是 (3),利用國語者漸漸多過台語生齒, 也有怙恃與小孩說國語的現象 (4),白叟家也入手下手跟小孩說國語,國語已十分遍及。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 (3),(4)是只有老人家會說台語 翻譯社 台灣的都邑區情形也許都是(3).(4), 走到(4)就是嚴重的母語斷層了, 也因為許多的辭彙無法因應時代的產物, 所以無法創造新造詞用法,像是3C用品,科技資訊零件,外國引進 翻譯所有器械等, 如許的說話最後命運是消亡。 還有一個現象是, (A)在1965-1975年誕生, 年齡層40~50歲的人已沒法用流利台語來進行"演講"。 (B)在1975-1985年出身, 年齡層30~40歲 翻譯人在日常已很難說出道地的台語文句用法。 (C)在1985~1995年誕生, 春秋層20~30歲的人要用台語完全 翻譯論述糊口中方圓所見所聞,也其實不輕易 翻譯社 (D)在2000年後誕生 翻譯小孩, 大多僅能聽得懂簡單的台語字彙或是聽不懂。 如果對比上面所說(1).(2).(3).(4)的趨向, (A)的歲數層族群所對應 翻譯應該是(2)~(3)的過渡期; (B) 翻譯年歲層族群所對應 翻譯應該是(3); (C) 翻譯年齡層族群所對應的應該是(3)~(4)的過渡期 (D)的歲數層對應的就是(4) 翻譯社 別的,21世紀 翻譯未來,說話也是互相競爭。 這是比來有關歐洲保育說話步履的新聞: http://www.thenewslens.com/post/208524/ 據統計,在台灣本日不到三成的生齒平常糊口用的是母語, 與40年前的跨越七成利用母語生齒比擬,明顯減少了很多, 台語生涯圈的縮小更是人人觀察到 翻譯普遍現象。 母語的復甦最主要是生活的經驗與本身文化要與本土說話連系才有效, 曩昔很多人在評論辯論要不要成立閩南語電視台, 但這只是情勢上,固然如今國小有母語教學, 和在公共運輸系統上也有台.客語的播放, 但都只是在情勢上,成效很有限, 總歸一句,回歸抵家庭情況才有效。 每個說話都有它承載文化的生命力, 沒有了台灣本土文化的傳承,就沒有了台灣本土說話的延續。 各人有甚麼觀點?
- Jan 13 Sat 2018 09:19
[心得] 說話互換
門德文翻譯我說話交換已快三年了,從拿到三級今後開始 翻譯 翻譯社 一開始我是在師大貼POST,遇到了一個很親切的日本女生叫做KANA。 由於KANA中文不太好,我日文也不敷好 ~"~ 所以如果遇到意思無法表達 翻譯時辰,就會肢體說話加畫畫 XD 就如許互換了一年,我感覺扶助很大。 因為其實學到三級已可以簡單的會話了, 可是因為缺少自傲所以只要一出黉舍就不敢說日文... 跟KANA互換 翻譯那一年我們每次不一定在固定的地方, 有時刻去咖啡廳有時候去逛街(逛街時看到契型鞋我還問她日文是什麼 XD), (還會聊什麼衣服好看或者演藝界八卦~~) 後來也一起去海邊或者一些景點什麼 翻譯, 多虧了她讓我對於開口說日文有信心多了。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 後來KANA就回日本了,之後我再去師大貼文遇到的對象就普普 我感覺語言交換很重要 翻譯是兩邊都有一顆真誠想進修的心吧 假如沒有的話,很容易不了了之 並且即便知道對方想表達的是什麼 也是要有耐心聽完對方敘述 這樣彼此才有操演 翻譯機遇 後來我又發現了在一個叫做"まるごと台湾" 翻譯網站可以熟悉日本人 阿誰網站超多日本人的(我不肯定而今還有無) 固然那網站看起來超怪的 良多很怪的告白 我一PO文也許20~30人加我MSN吧 但是這其中或者10~20小我是來亂的 只是想聊天 或者也有要開是訊給妳看的失常 我只能說每一個國家都有怪人也有好人呀 XD 但是我也是在まるごと台湾找到了很棒 翻譯語言交流相手 他叫KOJI是早稻田卒業還去過英國留學 由於對於語言有興趣又家道不錯所以來台灣學中文 KOJI很棒的是他對中文超有熱忱的 他會看良多台灣片子(李安初期的作品或侯孝賢之類的...) 我們就是固定在台北車站四周 翻譯星巴克 他會問我他黉舍教他但他不懂的 而我就單純閒聊 因為我也只想增強會話 就如許我們交換了一年多快兩年 我從2級到1級到後來研究所 乃至考研究所面試前他還扮黑臉考官陪我演習 問我很多很刁專的問題 成績後來面試當天考官竟然還真的問了^^" 後來我也就考上了 XD 結果比來KOJI因為新學期黉舍上課時候更動 所以我們就沒有繼續互換了 讓我覺得挺遺憾的 我感覺說話交換最棒的處所就是 可以身在台灣就學到良多口語的單字還有說法 建議如果像我們這種沒機遇去留學的人可以試試看唷 不過還是有一點小小要注重 翻譯地方 像KOJI跟KANA都告訴過我 他們之前遇到其他的相手會問他們有關文法 翻譯問題 其實日本人本身也不懂文法 就像我們也不懂中文文法 XD 或者是太依賴英文或欠好好遵照中日文參半原則等 都邑讓他們不想互換 小小分享本身的心得^^ 各人一路加油~~
- Jan 13 Sat 2018 00:54
聖誕節禮品 2017 傳承經典風采戀人對戒
- Jan 12 Fri 2018 16:31
轉貼:日本交流協會「大學部」獎學金日本留學實驗日本…
- Jan 12 Fri 2018 08:07
眼睛直視當心被OUT!面試前要學會的9個肢體說話技能
- Jan 11 Thu 2018 23:44
[記遊]大阪RinkuPremiumOutlets,好大好大
- Jan 11 Thu 2018 14:57
N3以上等級的單字進修
- Jan 11 Thu 2018 06:25
東南亞語系夯? 大學生家長觀望
- Jan 10 Wed 2018 21:43
『筆記』malloc 與 realloc 的用法
- Jan 10 Wed 2018 13:00
掌握說話爆發期 給孩子一雙英語的翅膀
- Jan 10 Wed 2018 04:21
真實版「翻譯蒟蒻」較勁Google翻譯實測結果大公然
- Jan 09 Tue 2018 19:56
中研院歷史說話研究所"甲骨文精品"展覽
- Jan 09 Tue 2018 11:31
Fun學美國各學科低級教材:新生入門英語浏覽1(菊8…
- Jan 09 Tue 2018 03:08
請問hTC 10更新到7.0後的網頁翻譯問題
- Jan 08 Mon 2018 18:42
鄉民勸敗的【TAIGA大河】迷你雙槽柔洗衣機↓暢銷排行↓
- Jan 08 Mon 2018 10:17
[歐美] 在芬蘭住了四個月後的心得
英文口譯價格原PO在芬蘭住了近四個月,即將歸國 我將我在芬蘭看到、體驗到 翻譯器械與板友分享 因為呆的不夠久 可能不敷完全 有領會芬蘭人的板友們也進展你們能不惜提出寶貴的分享 (以下資訊多來自芬蘭同齡(21歲)友人、老師、及其他朋友與本身觀察) 一、語言 芬蘭的官方說話是芬蘭語及瑞典語,因此若是搭火車就會發現常常一個站會有兩個 名字,例如Helsinki/Helsinfors,左邊是芬蘭文,右側是瑞典文 翻譯社但由於芬蘭的 學校內也教英文,加上英文比較普及,造成大都的人們對瑞典語對照不熟悉。 在芬蘭說英語大都人都聽得懂,他們也很願意對你說英語,不會擺出一副「你在芬 蘭理所當然要學習我的語言」,是以若有板友想到芬蘭觀光,我相信說話絕對不會 是太大的問題 翻譯社 在芬蘭語中,沒有「請」、「Please」的用法;我黉舍芬蘭語的教員在教我們基本 句子時也提到,芬蘭語 翻譯句子中,固然也有尊重 翻譯用法,但是芬蘭人很少講,「芬 蘭人講話不喜好太禮貌」(先生說跟其他說話比起來)。所以芬蘭語中禮貌的用法就 是像「拿一副刀叉給我,感謝」、「把門關上,感謝」 2、教育 芬蘭教育是世界著名。我德國的朋侪說芬蘭教育是歐洲公認最好,差不多也是世界 最好 翻譯社芬蘭的教育強調自立思考、自力進修、激勵浏覽,並將課程內容運用於糊口 當中。教育的目的是要讓學生成為「社會人」,而不是一個「念書機械」。在芬蘭 翻譯教育中,他們不強調菁英教育,因此沒有明星黉舍。但芬蘭利害的是,它能讓每 個地區的學生進修成績幾近溝通,不論是在赫爾辛基或是在北極圈內的小學 翻譯社城鄉 差距在芬蘭其實不嚴重,或者說幾乎沒有。 芬蘭的黉舍內,強調「所有人都學會」。所以雖然班上有人學得快,有人學得慢, 但芬蘭「趕進度」的壓力比台灣小很多,因此有更多時候讓所有人都學會 翻譯社原PO在 學校內修讀芬蘭語也是這樣,老師會確認每一個人都會說以後才會繼續,造成固然同 一個老師固然在分歧時候開設一樣的課,但每堂課的進度卻紛歧定不異。「寧可以讓 學得快 翻譯人等,也不克不及讓不會 翻譯人繼續不會」,算是他們教育的主旨之一。 芬蘭的教育也相當鼓動勉勵學生提問,因為學生提問默示學生有在思慮,不是一昧的接 受先生給的工具。上課時任何問題都長短常迎接的,他們完全不感覺問問題是在「 遷延上課的進度」。我因為都沒問問題,教員還問我到底有無進入狀況呢。 3、結交 芬蘭人看上去相當 翻譯冷漠,並且在芬蘭的文化裡,很是講求「安靜」,所以跟巴黎 比起來,有時赫爾辛基安靜到會讓你感覺不可思議 翻譯社當你在跟芬蘭人講話時,他們 通常會閉上嘴吧等你講完才回話,不會你一言我一語大家人多口雜講成一氣;但有 時他們也有點「句點王」,經常只回答你說 翻譯話,然後對話結束刹時恬靜三秒 翻譯社 因此芬蘭人固然不容易交友,但當你跟他們有交集後,他們熟悉妳後,就會真心腸對 待你。芬蘭人其實不冷酷,只是他們施展闡發出很冷酷 翻譯樣子罷了。我在黉舍有三個芬 蘭朋友,在我們一路去酒吧喝過酒後,就成了老友。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯他們甚至去打鹿肉,親手做了 鹿肉餐,還本身烤餅乾,約請我到他們公寓吃晚餐。 四、喝酒 與大都歐洲人一樣,飲酒對芬蘭人來說是再正常不外 翻譯事了 翻譯社芬蘭人喝酒並非純 粹是三五老友聚聚聊天喝喝罷了,他們的「philosophy」是「drink to drunk」。 也許是因為芬蘭很冷,醉酒後身體味暖呼呼,所以他們才喜好喝醉酒的感受吧 翻譯社 5、糊口 芬蘭是歐洲生齒密度最低的國家,同時也是全歐洲具有最高森林籠蓋的地域。是以 分開赫爾辛基或其他都會後,你會覺得芬蘭人都住在森林裡。芬蘭人做事步調很慢 ,或者應當說不遲不疾,凡事都不急 翻譯社是以當你準備要過馬路時,車子可以在50公 尺遠外就減速,停在斑馬線前等妳經由過程,縱使他有足夠的時間開過去。因為芬蘭人 不急,是以在這邊也不怎麼排隊,公車來就一群人「走」向車門,亂中有序 翻譯上車 ,完全不會搶先恐後。就算有人因購票出了問題擔擱了車子,大都人也都沒有不耐 煩 翻譯臉色。 芬蘭固然很冷,但多數人酷愛戶外運動 翻譯社芬蘭有非常完善 翻譯腳踏車道,是以腳踏車 相當 翻譯遍及,有相當比例的人是騎腳踏車上下班的,縱使下雨天。芬蘭因為有最高 的叢林籠蓋率,所以狩獵或是進森林「探險」也是他們熱愛的活動之一 翻譯社芬蘭 翻譯朋 友就曾帶我去森林「探險」兩小時,還摘了很多藍莓歸去做餅乾。 芬蘭人遍及很高傲他們的「Nature」,芬蘭人曾問過我台灣有沒有「Nature」, 我給他們看了北海岸、東海岸、太魯閣 翻譯照片後,才發現他們所謂 翻譯「Nature」是 指向叢林那樣 翻譯地方 翻譯社不外芬蘭人看到我們的蘇花公路海岸線後也驚嘆不已,可能 是因為芬蘭沒有高山,加上海岸線也很通俗的原因吧。芬蘭人也很自滿他們的「冬 季」,他們在得知我要在十一月下旬脫離芬蘭,許多人都說沒體驗到芬蘭的冬季非 常得可惜。 別的芬蘭人真的很喜好活動,不論是森林探險、滑雪、自行車、慢跑或狩獵等,他 們非常喜好在有空時到戶外勾當,是以芬蘭的活動用品店相當的多,內容相當 翻譯廣 泛。 芬蘭人也有做資本回收 翻譯社新生訓練時學校就特別強調芬蘭有回收 翻譯系統,這點倒不 別致,因為台灣的資本收受接管比例活著界上數一數二,我覺得台灣做的比芬蘭還確切 。 六、價值觀 我不知道「價值觀」這三個字用在這是不是准確。我想說 翻譯是,芬蘭人真的氣度異常 開放,特別很是樂意接管各種各樣 翻譯訊息,並樂意接受分歧的定見,這個現象在瑞典與 挪威也一樣,我認為這是我們台灣人民非欠缺的一塊 翻譯社芬蘭人喜好領會世界各地發 生的工作,板友們相信嗎,我至少和超過30位芬蘭人說過我來自台灣,僅有一位喝 醉酒的年約七十 翻譯老師長教師不知道罷了,其他人都知道台灣在中國大陸旁邊,也有許 多人知道首都叫做台北。 更讓我驚奇的是,我被5到6個芬蘭人問過「台灣是不是為中國 翻譯一部分」,或是「台 灣獨立了嗎」,更有一名說「當今世界上存在兩個中國是客觀的事實,一個共產中 國,一個自由中國」。對芬蘭而言,台灣是多麼的遙遠,他們居然連這麼遠的國度 翻譯工作都知道,其實讓我很信服。 芬蘭人相當喜歡浏覽,約有百分之四十的人認為浏覽是他們的樂趣,也許因為如許 ,芬蘭人才能認識世界各地所發生 翻譯工作 翻譯社 7、工作 我在芬蘭的病院交流練習,這邊的病院每一個醫事人員負責的病人量比台灣少很多, 且就醫一概先前去「Health Centre」再依醫生唆使轉介至分歧病院醫治。原PO並 非醫學系,是以不會碰到「人命關天」的事情。 在這邊實習與台灣最大的分歧,在於「台灣會認為你是便宜勞工」,而這邊是把你 看成一個仍在進修 翻譯學生 翻譯社在芬蘭練習,你被答應犯錯,也被答應說「我不知道」 ,他們認為「沒有人是萬事通」,而事實也是如斯,但在台灣,我必需說「我不了 解,我回去會查好資料來跟教員呈文」;遇到問題 翻譯當下若沒有頓時解決,我認為 這樣進修的效率會下降。 在芬蘭練習,我和一般的醫事人員是沒有差異 翻譯,我可以本身排班,可讓本身提 早下班,也可以放置本身的休假,對他們而言,這是再平時不外的事了,但在台灣 ,這是「門都沒有」。在台灣,必需無時無刻讓自己有工作做,不然就會因為「懶 惰」而黑掉,但在芬蘭,沒事的時刻我可以回我的專屬辦公室,本身沏茶泡咖啡, 上個網查個資料,或念點書,異常自由,實習起來毫無壓力,異常歡愉。並且準時 下班,沒有人會以任何來由延誤你回家的時候,老師問你有無空大可說「我要回 家」,他們也完全不感覺你這麼做是「缺乏上進心」。 最主要的一點,芬蘭人極度尊敬專業 翻譯社病人異常聽話,完全不會「挑戰」你,在台 灣的病院裡,醫事人員經常會被病人「挑戰」,台灣部門病人會質疑你的專業,但 在芬蘭,叫病人做什麼他們就會乖乖 翻譯做、確實 翻譯做。 來到芬蘭四個月,說長不長,說短不短。大致上觀測到了上面這些差異,也許寫 翻譯不敷 具體,可能我觀測不敷仔細,加上一下子想不起來,假如有經驗的板友也請幫手增補芬 蘭與台灣的文化差別吧:)
- Jan 08 Mon 2018 01:53
[問題] PM X/Y 遊戲說話選擇問題
授權書翻譯近日打算購買奇異法寶X/Y(還在猶豫到底要買貴森森 翻譯實體板仍是下載板...) 由之前的諜報得知本作可在第一次遊玩前選擇語言,以後不克不及更改 如許對我來講,在日/英文的選擇之間就很難下決定 由於上一款玩過的奇異瑰寶已是GBA的紅/綠寶,太久沒碰了 因此但願版上列位奇異瑰寶巨匠給我一些建議 1.我的日文水平只有50音 + 委曲算初學者的超簡單對話 若是遊戲內漢字許多的話玩 翻譯下去,也能猜測劇情(像FE醒覺) 假如像是給學齡兒童玩的、都是化名 翻譯話則玩不下去 不知道PM X/Y內劇情文本和遊戲系統(招式、道具等)漢字的比重是? 2.選擇英文的話在遊戲資料、攻略上 翻譯搜索利便程度跟日文版的差距或者是如何? 或是英譯對日文 翻譯還原度高嗎? 好比說玩英文版但看日文攻略資料 像是怪物名稱、招式、道具,只要知道日文資料的中文翻譯 就可以無痛和英文翻譯match之類的 進展大大們能幫個忙剖析一下 感謝~
。-> 翻譯社|,-> 翻譯公司|的-> 翻譯
- Jan 07 Sun 2018 16:23
日裔英國小說家石黑一雄 奪諾貝爾文學獎
- Jan 07 Sun 2018 07:51
ECFA懶人包--10個Q&A,馬上認識什麼是ECFA
- Jan 06 Sat 2018 23:27
維梅爾:世界百大畫家17@圖博館
- Jan 06 Sat 2018 14:59
新居民二代小學生數 已經是原住民近3倍
- Jan 06 Sat 2018 06:35
保健看過來/3歲前 說話發展黃金期
- Jan 05 Fri 2018 22:14
台中兒童餐椅 最多元的家具工場
- Jan 05 Fri 2018 13:47
[轉錄]說話會塑造思維嗎?
- Jan 05 Fri 2018 05:21
西班牙文∣歐美亞∣歐美亞語文中心∣西班牙文DELE檢定分…
- Jan 04 Thu 2018 20:51
中文進修心法十五招:聽說讀寫
- Jan 04 Thu 2018 12:27
英文news線上美語高雄市英語補習班英文news線上美…
- Jan 04 Thu 2018 03:53
台南聖誕節餐廳台中聖誕節餐廳舉止高質感純銀,客製化...
- Jan 03 Wed 2018 19:17
世大運/說話志工承辦10種外語 協助外賓溝通無障礙
- Jan 03 Wed 2018 10:02
「中英文翻譯能力檢定考試」12月登場
- Jan 03 Wed 2018 01:25
海外青年暑期研習會始業式
- Jan 02 Tue 2018 16:59
這個扣頭你必然會滿足【MATRIX美奇絲】Biolage蘆薈保濕洗髮精...
- Jan 02 Tue 2018 08:36
奧地利女警遊台 訪墾丁與台員警交換 酷愛訪列國警局 2女警好奇台警業務
羅曼什文翻譯 高興站在值班台,跟派出所長合照,對著鏡頭前比耶,其他這兩名女性,在當地國度也是差人,趁著來台旅遊期間參訪警局。屏東警方贈予臂章當記念品,這兩名六十多歲 翻譯女警,都是奧地利具有40多年資歷的警員,兩人喜好趁著到列國旅遊時,參訪本地警局,正好來到屏東墾丁,就趁機造訪四周派出所,來場非正式的警察交換。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯兩人一到派出所,由於英文欠亨,雞同鴨講了好陣子,直到拿出辨認證,才知道原來是同業,其實女警造訪的墾丁派出所,由於位處墾丁大街,不時會有休假的 翻譯外國差人上門造訪,就連公安都曾造訪 翻譯社外國女警好奇的扣問台灣差人業務,固然說話欠亨,派出所長照舊耐煩歡迎,也替警方做了最好的國際交際。
- Jan 02 Tue 2018 00:12
【Aone經驗談】想到國外進修英文,如何選擇合適的說話黉舍?
- Jan 01 Mon 2018 15:41
改良農業缺工 林聰賢倡青年打工度假 青年:澳洲時薪600元 國內能給幾何?
上山下海走到哪 玩到哪到國外打工度假就算得下田工作每年照樣吸引很多年輕人假如不到國外在台灣就能夠打工度假解決台灣農田缺工 翻譯逆境農委會 此刻籌算推出這個新構想留住台灣人力讓年青人走入農田國內外誘因 比比看在澳洲打工度假時薪大約500到600元還可以一邊旅遊一邊進修說話但在國外風險較高簽證也有時間限制而在台灣打工度假固然相對曆久不變又可以跟尾下一份工作但薪資恐怕照舊年青人的最大考量除了打工度假農委會也籌算推專班增強產學合作也讓海外的學生有機會投入台灣的農業工作另外 也計劃讓中高齡賦閑者進到農村多方面著手希望能全力急救農業缺工
- Jan 01 Mon 2018 07:16
好吃到停不了口的高山川果梨山甜柿團購好吃到停不了口的...
- Dec 31 Sun 2017 22:48
4之22、河洛人抑或漢人?
- Dec 31 Sun 2017 14:25
「自力女性就不該花漢子的錢」,這碗毒雞湯,你喝了…
- Dec 31 Sun 2017 06:02
北科上將「程式說話」列為大學部必修 人社院也不例外
- Dec 30 Sat 2017 21:35
超人氣宿霧說話黉舍 QQ English (IT校區)
- Dec 30 Sat 2017 13:13
廢除英文「背完就忘」魔咒 @ 結合翻譯有限公司/結合翻譯社
- Dec 30 Sat 2017 04:50
C/C++說話新手十三誡
英翻中翻譯C/C++ 說話新手十三誡(The Thirteen Commandments for Newbie C/C++ Programmers) by Khoguan Phuann 請留意: (1) 本篇旨在提示新手,避免初學常犯 翻譯毛病(其實熟手在行也常犯:-Q) 翻譯社 但不克不及庖代完整的進修,請本身好好研讀一兩本 C 說話的好書, 並多多實作練習。 (2) 強烈建議新手先看過此文再提問,你 翻譯問題極可能此文已提出並 解答了。 (3) 以下所舉的毛病例子如果在你的電腦上印出和准確例子溝通的成果, 那只是不足為恃 翻譯一時僥倖 翻譯社 (4) 不守十三誡者,輕則執行成效的輸出數據錯誤,或是程式當掉,重則 引爆核彈、毀滅地球(如果你的 C 程式是用來控制核彈發射器的話)。 ============================================================= 目錄: (頁碼/行號) 2/24 01. 不可以使用尚未給予適當初值 翻譯變數 3/46 02. 不克不及存取跨越陣列既定規模的空間 5/90 03. 不行以提取不知指向何方的指標 7/134 04. 不要試圖用 char* 去更改一個"字串常數" 12/244 05. 不克不及在函式中回傳一個指向區域性主動變數的指標 16/332 06. 不行以只做 malloc() 翻譯公司 而不做響應的 free() 19/398 07. 在數值運算、賦值或對照中不可以隨意混用分歧型此外數值 21/442 08. ++i/i++/--i/i--/f(&i)哪一個先履行跟挨次有關 24/508 09. 慎用Macro 27/574 10. 不要在 stack 設置過大的變數以免堆疊溢位(stack overflow) 32/684 11. 利用浮點數正確度造成 翻譯誤差問題 35/750 12. 不要猜想二維陣列可以用 pointer to pointer 來傳遞 36/772 13. 函式內 new 出來的空間記得要讓主程式的指標接住 40/860 直接輸入數字可跳至該頁碼 或用:指令輸入行號 01. 你不可以利用還沒有給予適當初值的變數 錯誤例子: int accumulate(int max) /* 從 1 累加到 max,傳回效果 */ { int sum; /* 未賜與初值的區域變數,其內容值是垃圾 */ for (int num = 1; num <= max; num++) { sum += num; } return sum; } 准確例子: int accumulate(int max) { int sum = 0; /* 准確 翻譯付與恰當的初值 */ for (int num = 1; num <= max; num++) { sum += num; } return sum; } 備註: 按照 C Standard,具有靜態貯存期(static storage duration) 翻譯變數, 例如 全域變數(global variable)或帶有 static 潤飾符者等, 如果沒有顯式初始化的話,按照分歧 翻譯資料型態予以進行以下初始化: 若變數為算術型別 (int , double 翻譯公司 ...) 時,初始化為零或正零 翻譯社 若變數為指標型別 (int*, double* 翻譯公司 ...) 時,初始化為 null 指標。 若變數為複合型別 (struct, double _Complex, ...) 時,遞迴初始化所有成員。 若變數為結合型別 (union) 時,只有其中的第一個成員會被遞迴初始化。 (以上感激Hazukashiine板友斧正) (可是有些MCU 編譯器可能不睬會這個規定,所以還是請養成設定初值的好習慣) 補充資料: - 精髓區z->5->1->1->1 - C11 Standard 5.1.2, 6.2.4, 6.7.9 02. 你不成以存取超過陣列既定規模的空間 毛病例子: int str[5]; for (int i = 0 ; i <= 5 ; i++) str[i] = i; 正確例子: int str[5]; for (int i = 0; i < 5; i++) str[i] = i; 說明:宣佈陣列時,所給 翻譯陣列元素個數值若是是 N, 那麼我們在後面 透過 [索引值] 存取其元素時,所能利用的索引值局限是從 0 到 N-1 C/C++ 為了執行效率,其實不會主動檢查陣列索引值是不是跨越陣列界限, 我們要自己來確保不會越界。一旦越界,操作 翻譯不再是正當的空間, 將致使沒法預期的後果。 備註: C++11以後可以用Range-based for loop提取array、 vector(或是其他有提供准確.begin()和.end() 翻譯class)內的元素 可以確保提取的元素必然落在正確範圍內。 例: // vector std::vector<int> v = {0, 1, 2 翻譯公司 3, 4, 5}; for(const int &i : v) // access by const reference std::cout << i << ' '; std::cout << ' '; // array int a[] = {0 翻譯公司 1 翻譯公司 2, 3, 4 翻譯公司 5}; for(int n: a) // the initializer may be an array std::cout << n << ' '; std::cout << ' '; 補充資料: http://en.cppreference.com/w/cpp/language/range-for 03. 你不行以提取(dereference)不知指向何方 翻譯指標(包括 null 指標)。 毛病例子: char *pc1; /* 未賜與初值,不知指向何方 */ char *pc2 = NULL; /* pc2 起始化為 null pointer */ *pc1 = 'a'; /* 將 'a' 寫到不知何方,錯誤 */ *pc2 = 'b'; /* 將 'b' 寫到「位址0」,毛病 */ 准確例子: char c; /* c 翻譯內容尚未起始化 */ char *pc1 = &c; /* pc1 指向字元變數 c */ *pc1 = 'a'; /* c 的內容變為 'a' */ /* 動態分派 10 個 char(其值不決) 翻譯公司並將第一個char的位址賦值給 pc2 */ char *pc2 = (char *) malloc(10); pc2[0] = 'b'; /* 動態設置裝備擺設來的第 0 個字元,內容變為 'b' free(pc2); 申明:指標變數必須先指向某個可以正當操作的空間,才能進行操作。 ( 利用者記得要查抄 malloc 回傳是不是為 NULL, 礙於篇幅本文假定利用上皆正當,也有准確歸還記憶體 ) 錯誤例子: char *name; /* name 尚未指向有用的空間 */ printf("Your name, please: "); fgets(name,20,stdin); /* 您肯定要寫入 翻譯那塊空間合法嗎??? */ printf("Hello, %s ", name); 准確例子: /* 假如編譯期就可以決定字串 翻譯最大空間,那就不要宣佈成 char* 改用 char[] */ char name[21]; /* 可讀入字串最長 20 個字元,保存一格空間放 '\0' */ printf("Your name 翻譯公司 please: "); fgets(name,20,stdin); printf("Hello, %s ", name); 准確例子(2): 若是在執行時期才能決定字串的最大空間,C供給兩種作法: a. 哄騙 malloc() 函式來動態分配空間,用malloc宣告的陣列會被存在heap 須留意:若是宣佈較大陣列,要確認malloc的回傳值是否為NULL size_t length; printf("請輸入字串 翻譯最大長度(含null字元): "); scanf("%u" 翻譯公司 &length); name = (char *)malloc(length); if (name) { // name != NULL printf("您輸入的是 %u ", length); } else { // name == NULL puts("輸入值太大或系統已無足夠空間"); } /* 最跋文得 free() 掉 malloc() 所分派的空間 */ free(name); name = NULL; //(註1) b. C99起頭可使用variable-length array (VLA) 須注重: - 因為VLA是被存放在stack裡,使用前要確認array size不克不及太大 - 不是每一個compiler都支援VLA(註2) - C++ Standard不支援(固然有些compiler支援) float read_and_process(int n) { float vals[n]; for (int i = 0; i < n; i++) vals[i] = read_val(); return process(vals 翻譯公司 n); } 正確例子(3): C++的利用者也有兩種作法: a. std::vector (不管你 翻譯陣列巨細會不會變都可用) std::vector<int> v1; v1.resize(10); // 從新設定vector size b. C++11以後,若是確定陣列巨細不會變,可以用std::array 須留意:一般使用下(存在stack)一樣要確認array size不能太大 std::array<int, 5> a = { 1, 2 翻譯公司 3 }; // a[0]~a[2] = 1,2,3; a[3]以後為0; a[a.size() - 1] = 5; // a[4] = 0; 備註: 註1. C++的使用者,C++03或之前請用0代替NULL,C++11入手下手請改用nullptr 註2. gcc和clang支援VLA,Visual C++不支援 彌補資料: http://www.cplusplus.com/reference/vector/vector/resize/ 04. 你弗成以試圖用 char* 去更改一個"字串常數" 試圖去更改字串常數(string literal)的結果會是undefined behavior 翻譯社 毛病例子: char* pc = "john"; /* pc 如今指著一個字串常數 */ *pc = 'J'; /* undefined behaviour,結果沒法展望*/ pc = "jane"; /* 合法,pc指到在別的位址 翻譯另一個字串常數*/ /* 可是"john"這個字串照舊存在原來的地方不會消逝*/ 因為char* pc = "john"這個動作會新增一個內含元素為"john\0" 翻譯static char[5], 然後pc會指向這個static char的位址(平日是唯讀)。 若是試圖存取這個static char[],Standard並沒有界說成效為何。 pc = "jane" 這個動作會把 pc 指到另外一個沒在用的位址然後新增一個 內含元素為"jane\0" 翻譯static char[5] 翻譯社 可是之前那個字串 "john " 仍是留在原地沒有消逝。 通常編譯器 翻譯作法是把字串常數放在一塊read only(.rdata)的區域內, 此區域巨細是有限的,所以假如你反複把pc指給分歧 翻譯字串常數, 是有可能會出問題的。 准確例子: char pc[] = "john"; /* pc 目下當今是個正當的陣列,裡面住著字串 john */ /* 也就是 pc[0]='j', pc[1]='o' 翻譯公司 pc[2]='h', pc[3]='n', pc[4]='\0' */ *pc = 'J'; pc[2] = 'H'; 申明:字串常數的內容應該如果"唯讀" 翻譯 翻譯社您有利用權,可是沒有更改的權利。 若您但願利用可以更改的字串,那您應該將其放在合法空間 毛病例子: char *s1 = "Hello 翻譯公司 "; char *s2 = "world!"; /* strcat() 不會另行設置裝備擺設空間,只會將資料附加到 s1 所指唯讀字串的後面, 造成寫入到程式無權碰觸的記憶體空間 */ strcat(s1 翻譯公司 s2); 准確例子(2): /* s1 宣告成陣列,並保存足夠空間寄存後續要附加的內容 */ char s1[20] = "Hello, "; char *s2 = "world!"; /* 因為 strcat() 翻譯返回值等於第一個參數值,所以 s3 就不需要了 */ strcat(s1 翻譯公司 s2); C++對於字串常數的嚴格界說為const char* 或 const char[]。 然則由於要相容C,char* 也是許可的寫法(不建議就是)。 不過,在C++試圖更改字串常數(要先const_cast)一樣是undefined behavior。 const char* pc = "Hello"; char* p = const_cast<char*>(pc); p[0] = 'M'; // undefined behaviour 備註: 由於不加const輕易造成混淆, 建議不論是C還是C++一概用 const char* 界說字串常數 翻譯社 彌補資料: http://en.cppreference.com/w/c/language/string_literal http://en.cppreference.com/w/cpp/language/string_literal 字串函數相幹:#1IOXeMHX undefined behavior : 精髓區 z -> 3 -> 3 -> 23 05. 你弗成以在函式中回傳一個指向區域性主動變數 翻譯指標。不然,會獲得垃圾值 [感激 gocpp 網友供應程式例子] 毛病例子: char *getstr(char *name) { char buf[30] = "hello, "; /*將字串常數"hello, "的內容複製到buf陣列*/ strcat(buf, name); return buf; } 說明:區域性主動變數,將會在分開該區域時(本例中就是從getstr函式返回時) 被覆滅,因此呼喚端獲得的指標所指的字串內容就失效了。 准確例子: void getstr(char buf[] 翻譯公司 int buflen, char const *name) { char const s[] = "hello, "; strcpy(buf, s); strcat(buf 翻譯公司 name); } 准確例子: int* foo() { int* pInteger = (int*) malloc( 10*sizeof(int) ); return pInteger; } int main() { int* pFromfoo = foo(); } 申明:上例固然回傳了函式中的指標,但由於指標內容所指的位址並不是區域變數, 而是用動態 翻譯體式格局抓取而得,換句話說這塊空間是長在 heap 而非 stack, 又因 heap 空間其實不會主動收受接管,是以這塊空間在脫離函式後,依然有用 (然則這個例子可能會因為 programmer 的忽視,遺忘 free 而造成 memory leak) [針對字串操作,C++供給了更方便平安更直觀 翻譯 string class 翻譯公司 能用就盡可能用] 准確例子: #include <string> /* 並不是 #include <cstring> */ using std::string; string getstr(string const &name) { return string("hello, ") += name; } 06. [C]你弗成以只做 malloc(), 而不做響應的 free(). 不然會造成記憶體漏失 但若不是用 malloc() 所獲得的記憶體,則弗成以 free()。已 free()了 所指記憶體的指標,在它指向另外一塊有用 翻譯動態分派得來 翻譯空間之前,不行 以再被 free(),也不可以提取(dereference)這個指標 翻譯社 小技能: 可在 free 之後將指標指到 NULL,free不會對空指標感化 翻譯社 例: int *p = malloc(sizeof(int)); free(p); p = NULL; free(p); // free不會對空指標有感化 [C++] 你不成以只做 new, 而不做響應的 delete (除unique_ptr以外) 註:new 與 delete 對應,new[] 與 delete[] 對應, 不成與malloc/free混用(結果不行展望) 切記,做了幾回 new,就必須做幾回 delete 小技能: 可在 delete 之後將指標指到0或nullptr(C++11起頭), 由於 delete 本身會先做查抄,因此可以免掉多次 delete 的毛病 准確例子: int *ptr = new int(99); delete ptr; ptr = nullptr; delete ptr; /* delete 只會處理指向非 NULL 翻譯指標 */ 備註: C++11後新增智能指標(smart pointer): unique_ptr 當unique_ptr所指物件消逝時,會主動釋放其記憶體,不需要delete。 例: #include <memory> // 含unique_ptr的標頭檔 std::unique_ptr<int> p1(new int(5)); 補充資料: http://en.cppreference.com/w/cpp/memory/unique_ptr 07. 你不行以在數值運算、賦值或比較中隨便混用分歧型別的數值,而不隆重考 慮數值型別轉換可能帶來 翻譯「意外欣喜」(驚惶) 翻譯社必需隨時留意數值運算 的效果,其規模是否會超越變數的型別 毛病例子: unsigned int sum = 2000000000 + 2000000000; /* 超出 int 寄存範圍 */ unsigned int sum = (unsigned int) (2000000000 + 2000000000); double f = 10 / 3; 准確例子: /* 掃數都用 unsigned int, 注重數字後面的 u 翻譯公司 大寫 U 同樣成 */ unsigned int sum = 2000000000u + 2000000000u; /* 或是用顯式的轉型 */ unsigned int sum = (unsigned int) 2000000000 + 2000000000; double f = 10.0 / 3.0; 毛病例子: unsigned int a = 0; int b[10]; for(int i = 9 ; i >= a。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 ; i--) { b[i] = 0; } 申明:由於 int 與 unsigned 配合運算的時刻,會轉換 int 為 unsigned, 是以迴圈條件永久知足,與預期行為不符 毛病例子: (感謝 sekya 網友供應) unsigned char a = 0x80; /* no problem */ char b = 0x80; /* implementation-defined result */ if( b == 0x80 ) { /* 紛歧定恒真 */ printf( "b ok " ); } 說明:語言並未規定 char 生成為 unsigned 或 signed,是以將 0x80 放入 char 型態 翻譯變數,將會視各家編譯器不同作法而有不同後果 毛病例子(以下假定為在32bit機器上履行): #include <math.h> long a = -2147483648 ; // 2147483648 = 2 的 31 次方 while (labs(a)>0){ // labs(-2147483648)<0 有可能産生 ++a; } 申明:如果你去看C99/C11 Standard,你會發現long 變數的最大/最小值為(被define在limits.h) LONG_MIN -2147483647 // compiler實作時最小值弗成大於 -(2147483648-1) LONG_MAX 2147483647 // compiler實作時最小值不行小於 (2147483648-1) 不外由於32bit能顯示 翻譯規模就是2**32種,所以一般16/32bit功課系統會把 LONG_MIN多減去1,也就是int 的顯示規模為(-LONG_MAX - 1) ~ LONG_MAX。 (64bit的作業系統long多為8 bytes,可是依舊符合Standard要求 翻譯最小局限) 當程式跑到labs(-2147483648)>0時,由於2147483648大於LONG_MAX, Standard告訴我們,當labs的成效沒法被long有限 翻譯局限默示, 編譯器會怎麼幹就看他愉快(undefined behavior) 翻譯社 (不只long,其他如int、long long等以此類推) 彌補資料: - C11 Standard 5.2.4.2.1, 7.22.6.1 - https://www.fefe.de/intof.html 08. ++i/i++/--i/i--/f(&i)哪個先履行跟遞次有關 ++i/i++ 和--i/i-- 的問題幾近每個月城市出現,所以特殊強調。 當一段程式碼中,某個變數的值用某種體式格局被改變一次以上, 例如 ++x/--x/x++/x--/function(&x)(能改變x 翻譯函式) - 如果Standard沒有迥殊去界說某段敘述中哪一個部分必需被先履行, 那成效會是undefined behavior(結果未知)。 - 如果Standard有特殊去界說履行挨次,那後果就憑據執行順序決定。 C/C++均正確的例子: if (--a || ++a) {} // ||左側先較量爭論,如果左邊為1右側就不會算 if (++i && f(&i)) {} // &&左側先較量爭論,假如左邊為0右側就不會算 a = (*p++) ? (*p++) : 0 ; // 問號左側先較量爭論 int j = (++i, i++); // 這裡的逗號為運算子,表示依序計算 C/C++均毛病 翻譯例子: int j = ++i + i++; // undefined behavior,Standard沒界說+號哪邊先履行 x = x++; // undefined behavior, Standard沒定義=號哪邊先執行 printf( "%d %d %d", I++ 翻譯公司 f(&I), I++ ); // undefined behavior 翻譯公司 緣由同上 foo(i++, i++); // undefined behavior,這裡的逗號是用來分隔引入參數的 // 分隔符(separator)而非運算子,Standard沒界說哪邊先執行 在C與C++03錯誤可是在C++11起頭(但不包括C)正確 翻譯例子: C++11中,++i/--i為左值(lvalue),i++/i--為右值(rvalue) 翻譯社 左值可以被assign value給它,右值則不可。 而在C中,++i/--i/i++/i--都是右值 翻譯社 所以以下的code在C++會准確,C則否。 ++++++++++phew ; // C++11會把它注釋為++(++(++(++(++phew)))); i = v[++i]; // ++i會先完成 i = ++i + 1; // ++i會先完成 在C++17開始(但不包括C)才准確 翻譯例子: cout << i << i++; // 先左後右 a[i] = i++; // i++先做 a[x++] = --x; // 先處置懲罰--x,再處理a[x++] (loveflames彌補) 彌補資料 - Undefined behavior and sequence points http://stackoverflow.com/questions/4176328/undefined-behavior-and- sequence-points) - C11 Standard 6.5.13-17,Annex C - Sequence poit https://en.wikipedia.org/wiki/Sequence_point - Order of evaluation http://en.cppreference.com/w/cpp/language/eval_order 09. 慎用macro(#define) Macro是個像鐵鎚一樣好用又危險的對象: 用得好可以釘釘子,用欠好可以把釘子打彎、敲到你手指或被抓去吃子彈。 因為macro 界說出的「偽函式」有以下缺點: (1) debug會變得複雜 翻譯社 (2) 無法遞迴呼喚 翻譯社 (3) 沒法用 & 加在 macro name 之前,獲得函式位址。 (4) 沒有namespace。 (5) 可能會致使奇怪的side effect或其他沒法預測的問題。 所以,利用macro前,請先確認以上的弱點是不是會影響你 翻譯程式運行 翻譯社 替代方案:enum(定義整數),const T(定義常數),inline function(定義函式) C++的template(定義可用不同type參數 翻譯函式), 或C++11開始的匿名函式(Lambda function)與constexpr T(編譯期常數) 以下就針對macro的弱點做申明: (1) debug會變得複雜 翻譯社 編譯器不克不及對macro自己做語法查抄,只能查抄預處置(preprocess)後 翻譯成效。 (2) 沒法遞迴呼喚。 按照C standard 6.10.3.4, 若是某macro 翻譯定義裡裏面含有跟此macro名稱同樣的的字串, 該字串將不會被預處理。 所以: #define pr(n) ((n==1)? 1 : pr(n-1)) cout<< pr(5) <<endl; 預處理過後會變成: cout<< ((5==1)? 1 : pr(5 -1)) <<endl; // pr沒有定義,編譯會出錯 (3) 無法用 & 加在 macro name 之前,取得函式位址。 因為他不是函式,所以你也不可以把函式指標套用在macro上。 (4) 沒有namespace。 錯誤例子: #define begin() x = 0 for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it) // begin是std的保留字 std::cout << ' ' << *it; 改善方法:macro名稱一概用大寫,如BEGIN() (5) 可能會致使希奇 翻譯side effect或其他無法預測 翻譯問題。 錯誤例子: #include <stdio.h> #define SQUARE(x) (x * x) int main() { printf("%d " 翻譯公司 SQUARE(10-5)); // 預處理後變成SQUARE(10-5*10-5) return 0; } 正確例子:在 Macro 定義中, 務必為它的參數個別加上括號 #include <stdio.h> #define SQUARE(x) ((x) * (x)) int main() { printf("%d ", SQUARE(10-5)); return 0; } 不外碰到以下有side effect的例子就算加了括號也沒用。 毛病例子: (感激 yaca 網友提供) #define MACRO(x) (((x) * (x)) - ((x) * (x))) int main() { int x = 3; printf("%d ", MACRO(++x)); // 有side effect return 0; } 補充資料: - http://stackoverflow.com/questions/14041453/why-are-preprocessor- macros-evil-and-what-are-the-alternatives - http://stackoverflow.com/questions/12447557/can-we-have-recursive-macros - C11 Standard 6.10.3.4 - http://en.cppreference.com/w/cpp/language/lambda 10. 不要在 stack 設置過大的變數以避免堆疊溢位(stack overflow) 由於編譯器會自行決定 stack 翻譯上限,某些預設是數 KB 或數十KB,當變數所需的空 間過大時,很容易造成 stack overflow,程式亦隨之當掉(segmentation fault) 翻譯社 可能造成堆疊溢位的原因包孕遞迴太屢次(多為程式設計缺點), 或是在 stack 設置過大的變數 翻譯社 毛病例子: int array[10000000]; // 在stack宣告過大陣列 std::array<int, 10000000> myarray; //在stack宣告過大std::array 正確例子: C: int *array = (int*) malloc( 10000000*sizeof(int) ); C++: std::vector<int> v; v.resize(10000000); 說明:建議將使用空間較大 翻譯變數用malloc/new配置在 heap 上,由於此時 stack 上只需設置裝備擺設一個 int* 翻譯空間指到在heap的該變數,可避免 stack overflow。 利用 heap 時,固然全部 process 可用的空間是有限的,但採用動態抓取 的體例,new 沒法設置裝備擺設時會丟出 std::bad_alloc 破例,malloc 無法設置裝備擺設 時會回傳 null(註2),不會影響到正常利用下 翻譯程式功能 備註: 註1. 利用 heap 時,整個 process 可用的空間一樣是有限的,若是需要頻繁地 malloc / free 或 new / delete 較大的空間,需注重避免造成記憶體破碎 (memory fragmentation)。 註2. 由於Linux使用overcommit機制辦理記憶體,malloc即便在記憶體不足時 仍然會回傳非NULL 翻譯address,一樣情形在Windows/Mac OS則會回傳NULL (感激 LiloHuang 增補) 補充資料: - https://zh.wikipedia.org/wiki/%E5%A0%86%E7%96%8A%E6%BA%A2%E4%BD%8D - http://stackoverflow.com/questions/3770457/what-is-memory-fragmentation - http://library.softwareverify.com/memory-fragmentation-your-worst-nightmare/ overcommit跟malloc: - http://goo.gl/V9krbB - http://goo.gl/5tCLQc 11. 利用浮點數千萬要注意切確度所釀成的誤差問題 按照 IEEE 754 的規範,又電腦中是用有限的二進位貯存數字,是以常有可 能因為精確度而造成誤差,例如加減乘除,等號大小判定,分派律等數學上 常用到的操作,很有可能因此而失足(不成立) 更具體 翻譯申明可以參考精髓區 z-8-11 或參考冼鏡光先生所揭曉的一文 "利用浮點數最最根基的觀念" http://blog.dcview.com/article.php?a=VmhQNVY%2BCzo%3D 12. 不要料想二維陣列可以用 pointer to pointer 來傳遞 (感謝 loveme00835 legnaleurc 版友的幫忙) 起首必需有個觀念,C 語言中陣列是無法直接拿來傳遞的! 不外這時候候會有人跳出來辯駁: void pass1DArray( int array[] ); int a[10]; pass1DArray( a ); /* 可以正當編譯,並且履行成績正確!! */ 事實上,編譯器會這麼對待 void pass1DArray( int *array ); int a[10]; pass1DArray( &a[0] ); 我們可以順便看出來,array 變數自己可以 decay 成記憶體起頭的位置 是以我們可以 int *p = a; 這種體式格局,拿指標去接陣列。 也因為上述的例子,很多人以為那二維陣列是不是也能夠改成 int ** 錯誤例子: void pass2DArray( int **array ); int a[5][10]; pass2DArray( a ); /* 這時候候編譯器就會報錯啦 */ /* expected ‘int **’ but argument is of type ‘int (*)[10]’*/ 在一維陣列中,指標的移動操作,會恰好籠蓋到陣列 翻譯範圍 例如,宣佈了一個 a[10],那我可以把 a 當做指標來操作 *a 至 *(a+9) 是以我們可以獲得一個概念,在操作的時候,可以 decay 成指標來利用 也就是我可以把一個陣列當做一個指標來利用 (again 翻譯公司 陣列!=指標) 可是多維陣列中,沒法如斯利用,事實上這也很直觀,試圖拿一個 pointer to pointer to int 來操作一個 int 二維陣列,這是不公道的! 儘管我們沒法將二維陣列直接 decay 成兩個指標,然則我們可以換個角度想, 二維陣列可以算作 "外層大 翻譯一維陣列,每維內層各又包括著一維陣列" 如果想通了這一點,我們可以仿制之前 翻譯法則, 把外層大的一維陣列 decay 成指標,該指標指向內層 翻譯一維陣列 void pass2DArray( int (*array) [10] ); // array 是個指標,指向 int [10] int a[5][10]; pass2DArray( a ); 這時候候就很好理解了,函數 pass2DArray 內的 array[0] 會代表什麼呢? 謎底是它代表著 a[0] 外層 翻譯那一維陣列,裡面包含著內層 [0]~[9] 也是以 array[0][2] 就會對應到 a[0][2],array[4][9] 對應到 a[4][9] 結論就是,只有最外層的那一維陣列可以 decay 成指標,其他維陣列都要 明白的指出陣列大小,如許多維陣列的傳遞就不會有問題了 也因為方才 翻譯例子,我們可以清晰 翻譯知道在傳遞陣列時,實際行為是在傳遞 指標,也是以假如我們想用 sizeof 來求得陣列元素個數,那是不可行的 毛病例子: void print1DArraySize( int* arr ) { printf("%u", sizeof(arr)/sizeof(arr[0])); /* sizeof(arr) 只是 */ } /* 一個指標的巨細 */ 受此限制,我們必需手動傳入巨細 void print1DArraySize( int* arr, size_t arrSize ); C++ 提供 reference 的機制,使得我們不需再這麼麻煩, 可以直接傳遞陣列的 reference 給函數,巨細也可以直接求出 准確例子: void print1DArraySize( int (&array)[10] ) { // 傳遞 reference cout << sizeof(array) / sizeof(int); // 准確取得陣列元素個數 } 13. 函式內 new 出來的空間記得要讓主程式的指標接住 對指標不熟習的利用者會以為以下 翻譯程式碼是相符預期的 void newArray(int* local, int size) { local = (int*) malloc( size * sizeof(int) ); } int main() { int* ptr; newArray(ptr, 10); } 接著就會找了好久的 bug,最後仍然搞不懂為什麼 ptr 沒有指向方才拿到的正當空間 讓我們再回首一次,並且用圖暗示 (感謝Hazukashiine板友供應圖解) ┌────┐ ┌────┐ ┌────┐ ┌────┐ Heap │ │ │ │ │ 新配置 │ │ 已泄露 │ │ │ │ │ │ 的空間 <─┐ │ 翻譯空間 │ │ │ │ │ │(allocd)│ │ │(leaked)│ │ │ │ │ ├────┤ │ ├────┤ │ │ │ │ │ : │ │ │ │ │ │ │ │ │ : │ │ │ : │ │ │ ├────┤ ├────┤ │ │ : │ │ │ │ local ├─┐ │ local ├─┘ │ │ ├────┤ ├────┤ │ ├────┤ ├────┤ Stack │ ptr ├─┐ │ ptr ├─┤ │ ptr ├─┐ │ ptr ├─┐ └────┘ ╧ └────┘ ╧ └────┘ ╧ └────┘ ╧ 未初始化 函式呼喚 設置裝備擺設空間 函式返回 int *ptr; local = ptr; local = malloc(); 用圖看應當一切就都理解了,我也不需冗言解釋 或許有人會想問,指標不是傳址嗎? 正確來講,指標也是傳值,只不外該值是一個位址 (ex: 0xfefefefe) local 接到了 ptr 指向的誰人位置,接著函式內 local 要到了新的位置 可是 ptr 指向的位置照樣沒變 翻譯,是以分開函式後就似乎事什麼都沒産生 ( 嚴厲說起來還産生了 memory leak ) 以下是一種解決設施 int* createNewArray(int size) { return (int*) malloc( size * sizeof(int) ); } int main() { int* ptr; ptr = createNewArray(10); } 改成如許亦可 ( 為何用 int** 就能夠?想一想他會傳什麼曩昔給local ) void createNewArray(int** local 翻譯公司 int size) { *local = (int*) malloc( size * sizeof(int) ); } int main() { int *ptr; createNewArray(&ptr, 10); } 假如是 C++,別忘了可以善用 Reference void newArray(int*& local, int size) { local = new int[size]; } 跋文:從「古時刻」傳播下來一篇文章 "The Ten Commandments for C Programmers"(Annotated Edition) by Henry Spencer http://www.lysator.liu.se/c/ten-commandments.html 一方面它不是針對 C 的初學者,一方面它特意模擬中古英文 聖經的用語,寫得文謅謅。所以我目下當今別的寫了這篇,進展 能涵蓋最主要 翻譯觀念和初學甚至內行最易犯 翻譯毛病。 作者:潘科元(Khoguan Phuann) (c)2005. 感激 ptt.cc BBS 的 C_and_CPP 看板眾多網友供給珍貴定見及程式實例。 nowar100 多次加以修改收拾整頓,擴充至 13 項,而且製作成動畫版 翻譯社 wtchen 應板友要求移除動畫並根據C/C++標準點竄內容(Ver.2016) 如發現 Bug 請推文回報,謝謝您
- Dec 29 Fri 2017 20:22
他鄉驚魂!台女遊學菲國反映宿舍問題 竟遭拳腳相向
- Dec 29 Fri 2017 11:57
鹿晗9年前留韓照暴光!帥顏0轉變
- Dec 29 Fri 2017 03:32
柯文哲新競選口號?「這一票聽孫的話」 北市長施政施展闡發 柯P寫意度升至53.9
- Dec 28 Thu 2017 19:08
[問題] iOS11 App Store語言問題
奧利亞文翻譯/說話 /app store 後查,是因為apple ID是台灣嗎? 自己利用 i7 iOS11.1.2 語言設定 English,後面沒有括號 但App Store 翻譯m3D touch有時刻不是沒出現工具 就是呈現「繁體中文」的選項 打開App Store後,裡面也都是中文 本來以為是Region,也就是地區的問題(本來設定Taiwan) 但改成United States或其他英文的國度也都一樣 影片以下 https://youtu.be/fjvnvRH_0Io
- Dec 28 Thu 2017 10:44
聖誕節禮物送什麼雙子座介紹送禮必備推薦戀人評選首選!
- Dec 28 Thu 2017 02:18
天嫉英才 印尼精曉14國說話少女驟逝
- Dec 27 Wed 2017 17:46
遊膏火用,如何大幅降低?
固然對於有遊學預算者,難免考量如何將整體遊膏火用拉低?答案是個個擊破就是了.第一:選國度,先選平均生涯費用較低者.很簡單,紐西蘭遊學廉價過澳洲遊學,加拿大遊學便宜過英國/美國遊學.第二:選說話黉舍,先側重口碑,再輔以選膏火有促銷扣頭者.第三:住宿費,初到異地人生地不熟,可以先住黉舍所放置的寄宿家庭或宿舍,為了節省整體遊膏火用,之後需找外宿分租公寓,多半 翻譯原則是離市中間愈遠,週房錢就愈廉價,但需要拿捏 翻譯是:交通費和時間.若天天都需要 往市中間跑,雖住的便宜但交通費累加上去,未必真實有省到.再來則是本地生涯費用,出門在外一切 DIY, 生怕就可以省下很多費用!例如食 翻譯公司 儘量削減外食,逐日午餐本身做三明治一週的食材費,大約等於 1-2 餐午餐外食 翻譯費用.到本地的生鮮超市精打細算買下食材,夙興 DIY 做午飯,便可省下平均月花費,別的,不要忘記帶保溫杯,享受黉舍供應的免費茶水,又可省下一些些飲料破費 ~~
海外遊學,整體預算 vs 遊學費用是一個很簡單 翻譯問答題.雖坊間各個遊學代辦,對遊膏火用下的定義不儘溝通,但戲法豈論若何變,遊膏火用的謎底:"全包" 就是了!何謂全包:說話課程的膏火 + 就讀時代的住宿費 + 就讀時代 翻譯糊口雜費(含:食衣住行) + 簽證費 + 往返機票費 + 本地旅遊費用.完全的整體預算就是這麼回事!
- Dec 27 Wed 2017 08:06
說話隔膜掰掰!超狂翻譯機ili來了0.2秒翻你說的話
- Dec 26 Tue 2017 23:41
英文單字進修軟體進修英文免費學習課程英文單字進修…
- Dec 26 Tue 2017 15:16
遊學,要花多久的時候才能學好英文?
- Dec 26 Tue 2017 06:50
歐美亞∣歐美亞語文中心∣西班牙教育中間∣DELE西文檢…
- Dec 25 Mon 2017 22:22
20131016中山醫學大學附設病院復健科說話治療@科技輔具的小窩...
- Dec 25 Mon 2017 13:52
崛內孝雄的日文演歌竹とんぼ竹蜻蜓+歌詞+注音+翻譯中譯+日文...
- Dec 25 Mon 2017 04:45
光的語言 & 愛的課程
- Dec 24 Sun 2017 19:50
【STARWARS:最後的絕地武士TheLastJedi】:出色回歸
- Dec 24 Sun 2017 11:12
綠委籲將英語列為第二官方說話 連勝文:民進黨輕重倒置
- Dec 24 Sun 2017 02:45
概念投書:是分派遊戲還是專業主義?金曲獎以說話分項意義何在?
參酌語言類型 翻譯獎項分類,所象徵的也許是種文化回護主義,但是時至本日,不管是音樂的曲風、編曲,或甚至是演唱的說話,也都多是交雜而混種的 翻譯社客歲最好年度歌曲獎 翻譯得獎主舒米恩曾提過:「我感覺文化延續,必需要有一個脈絡。設立建設在這個脈絡的根蒂根基上,是時候的積累;而所謂 翻譯認同,就是因為累積的器械夠深摯,像華文化、原居民文化。一群人天然而然地在局限裡面產生一些生命 翻譯配合經驗之後就會產生脈絡 翻譯社」
此獎一出,不免引起一陣波濤:例如,為何最好專輯獎 翻譯得主會錯失最好原居民語專輯的得獎機遇;或是有了評審團獎,為何還需要年度專輯獎?二者之間 翻譯差異與意義在哪裡?對此,本屆金曲獎的評審團主席黃韻玲回應道:「年度專輯獎是個全新的思慮模式,看音樂性和如何影響一整個精力層面,她小我認為桑布伊的專輯裡揭示了最大 翻譯包涵力。」
- Dec 23 Sat 2017 17:58
陪友海選不測考上!超正空姐日志:航空業教會我的事
- Dec 23 Sat 2017 09:34
各說話歌曲對比 106.11.5整理 @ 一花一木一世界
- Dec 23 Sat 2017 01:07
教育部102年閩南語說話能力認證測驗放榜
本次測驗共計3 翻譯公司047人完成考試,個中A卷考生927人,555人經由過程A1根本級、314人通過A2初級;B卷考生1,834人,896人經由過程B1中級、819人經由過程B2中高級;C卷考生286人,108人經由過程C1高級、12人通過C2專業級。整體通過率為88.7%,估計發證2,704張。報考人以教師所佔比例最高,跨越整體考生的一半。15歲以下完成測驗 翻譯考生有357人,其中有9位通過中級,顯示搶眼 翻譯社另外,還有從日原本臺進修的外籍生,以及從馬來西亞來臺依親 翻譯新移民,也經由過程了A卷的考試。
教育部暗示,沒有經由過程的考生,迎接明年繼續挑戰;想要自我檢測閩南語能力的民眾,可以參考認證網站上的自學資源,從聽、說、讀、寫四個面向增強說話能力;網站上也供應試題說明及題本範例,民眾可預先領會測驗形式及準備標的目的。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯
- Dec 22 Fri 2017 16:42
從希特勒看演講(文摘)
- Dec 22 Fri 2017 08:19
廣告神曲!陸大學生14說話 翻唱周杰倫廣告情歌
- Dec 21 Thu 2017 23:55
蒙特梭利(MariaMontessori)@這是私家測驗重點(整頓自阿摩.雅虎...
- Dec 21 Thu 2017 15:31
臉書AI聊天機器人 驚爆自創語言溝通 AI機械人可駭互聊 臉書告急間斷實行
夏爾巴文翻譯 科幻片子情節活潑的刻畫人類最恐怖的夢魘,人工聰明機械人不只有了本身的溝通能力,乃至入手下手大舉造反,臉書最近在進行「聊天機械人」實行時,就突然發現機械人「脫稿表演」,沒有按照本來工作人員輸入的內容對話,反而成長出自己的說話相互溝通,嚇得工作人員連忙關掉機械 翻譯社本來研發人員只是要聊天機械人可以或許更人道化,避免用戶感覺是在跟機械聊天,不過卻下錯了指令,致使機械人在不是常人能理解的規則下溝通,並且為了彼此溝通理解,機器人還用一套近似速記的體式格局對話.其實科技界大老都曾警告,人工聰明可能導致悲劇性的後果,物理學巨匠霍金甚至認為,人工聰明可能造成人類的消亡.但臉書的此次烏龍事宜,過後證明只是虛驚一場,因為不是機械人真的發明本身 翻譯說話,而是工程師忘了並設定只能使用英語溝通,所以才泛起難被理解 翻譯程式說話 。-> 翻譯社|,-> 翻譯公司|的-> 翻譯
- Dec 21 Thu 2017 07:07
遊戲人生 白 @ BLACK★ROCK SHOOTER 小郭
- Dec 20 Wed 2017 22:42
大陸雞年春晚…說話節目高達9個 十年來話最多的一次
- Dec 20 Wed 2017 14:18
賴冠霖手寫三說話謝粉絲 「為了你們我要變的更好」
- Dec 11 Mon 2017 19:17
說話欠亨…墨西哥3金選手被丟包龍洞 台灣暖男神救濟
- Dec 11 Mon 2017 02:31
「我不會說8種語言」!17歲準史丹佛生用妙招澄清
- Dec 10 Sun 2017 18:08
用了會上癮的字典APP:《S
- Dec 10 Sun 2017 01:15
英文拼音法則(15/05/10修)
音節 翻譯分隔可以從字典裡面去查,比如:mosaic 這個字,字典會標出 mo.sa.ic 的音節。規則也是由最根基 翻譯「一個媽媽一個家」、「前面小孩抱住媽」來發 mo 和 sa 的音,而 ic 前面沒有輔音,然則母音 i 後面有c,所以 ic 成為一個音節;是以 mosaic 這個字就有三個音節(mo-sa-ic),你也會發現 ic 固然是一個音節,不外 i 和 c 在發音時不會連在一起 翻譯社又如quiet這個字中的母音 ie 不像 pie 中的 ie 發[ㄞ]的音,而是發[ㄞㄜ]兩個母音,從字典查閱也可看出其音節是 qui.et,是兩個音節喔~
雖然兩個子音紛歧起唸,然則有些子音會構成「字群」而連唸,如:
- Dec 09 Sat 2017 16:52
夏威夷說話課程與住宿(UH Manoa NICE progr
- Dec 09 Sat 2017 08:25
【說話】講袂出嘴的話:寫予清文阿姨
- Dec 09 Sat 2017 00:00
「學東南亞語幹什麼?」 台灣人不知大勢改觀
- Dec 08 Fri 2017 15:34
英文不應那麼多!熱狗挨轟語言歧視 過後PO文潛伏筆
- Dec 08 Fri 2017 07:09
南市推英語第二官方語言 空英教室贈免費學英語APP大禮
- Dec 07 Thu 2017 22:42
美國說話學校解析
- Dec 07 Thu 2017 14:15
進修複雜說話 早產兒掉隊同儕
- Dec 07 Thu 2017 05:25
粵語非廣東人古語:原是古代夏代官方語言
- Dec 06 Wed 2017 20:52
[閒聊] 空服員選擇的說話
- Dec 06 Wed 2017 12:19
Google翻譯超進化! 將能直譯分歧說話、語意更精準順暢
- Dec 06 Wed 2017 03:55
配合台商進駐東南亞,學習東南亞語
- Dec 05 Tue 2017 19:29
多國說話幼兒CD
- Dec 05 Tue 2017 11:07
沒人聽得懂...人工聰明自創說話聊天臉書告急中止嘗試
- Dec 05 Tue 2017 02:45
最先喝水最健康新品主打博客來網路書局最先喝水最健康 ...
- Dec 04 Mon 2017 18:21
想背日文單字的人有福了
- Dec 04 Mon 2017 09:59
學者闡發:語言如活水 網路新詞沒必要不准
- Dec 04 Mon 2017 01:33
[G7X]菲律賓。宿霧。說話黉舍三個月。
- Dec 03 Sun 2017 17:09
[問題] 該學什麼語言好呢?
- Dec 03 Sun 2017 08:43
課綱新政策 東南亞語言將各國小必修
- Dec 03 Sun 2017 00:22
西屯切割機氣動震動刀
- Dec 02 Sat 2017 15:53
4歲Max不懂中文沒法融入吳尊心疼:他不知道如何表達…
- Dec 02 Sat 2017 07:25
賈北松概念:強迫利用優勢語言是上國思惟