Re: [問題] 指標

看板ASM (組合語言)作者 (鬼斗)時間9年前 (2014/07/27 05:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《GooLoo (平凡)》之銘言: : 之前有查過一些c語言的書, 瞭解指標... : 但是看完文字描述, 還是不太會用, 也不是很了解它的精神 : 平常都寫一些簡單控制時序的程式,沒有用到指標 : 今天看別人寫的CODE,又看到指標..... : 還是想問這問題, 就是我把*拿掉跟沒拿掉,對整體動作有什麼影響? : 如果沒影響, 好處又是什麼呢? : 如: : void test(unsigned char *data,unsigned long len) : { : ..... : } : 不曉得程式給這樣夠嗎?還是要給些什麼? : 我看程式大部份都寫得跟我平常寫法差不多,只有這邊多* 雖然這篇比較適合發在C_C++板 但路過還是回一下 如果有大大覺得我說的不清楚甚或有誤 也請不吝拔刀相助 指標這個詞來自於原文的pointer 翻譯上不能說不精確 意思就是「指到某個東西的標記」 所以你的問題就相當於是 「直接指明一個東西」和「給一個指到某個東西的標記」的差異究竟在哪? 這麼說吧 假設你是一個裝潢師傅 客戶跟你約好整修他的新房子 「指明一個東西」的情況下你會做的事情是 (相當於傳入一間房子給函數) 你對一間房子做裝潢,但是這間房子和客戶的房子沒有關係。 而且你做完了就不管那間房子在哪裡,因此沒有意義。 「給一個指到某個東西的標記」的情況是客戶會給你那間房子的地址 (相當於傳入地址給函數) 讓你可以去到那間地址指定的房子做裝潢。 再一個例子 假如你是助教而且不小心登記錯了成績被同學A抗議 A要求你把登記錯誤的60改成90 「指明一個東西」的情況下你會做的事情是 (相當於傳入60分給函數) 把某一個寫著60的數字刪掉然後把它改成90,但是這個不是A的成績欄。 因為你改寫完了也不在意這是什麼,因此沒有意義。 「給一個指到某個東西的標記」的情況是你找到A的成績欄位 (相當於傳入A的欄位給函數) 讓你可以修改A的欄位裡的值。 這兩種效果是截然不同的 不是程度上的差異 而是性質上的差異 如果型別對錯不但語意上有根本的錯誤 語法上通常也不太可能被編譯器接受 希望這篇有幫助到你 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.128.239 ※ 文章網址: http://www.ptt.cc/bbs/ASM/M.1406411323.A.FAD.html
文章代碼(AID): #1Jr28x-j (ASM)
討論串 (同標題文章)
文章代碼(AID): #1Jr28x-j (ASM)