iT邦幫忙

4

五分鐘快速了解 [傳址,傳參考,傳址]

石頭 2018-04-08 20:46:5426565 瀏覽

傳址,傳參考,傳址 是基本但重要的概念。此概念在很多語言都通用

我使用Gif動畫檔 快速帶領大家了解 傳址,傳參考,傳址

  1. 傳值(Call By Value)

    顧名思義 是把傳到 另一個記憶體位置

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627294_92268.gif
2. 傳址 (Call By Adress)

是把`記憶體位置`傳到 另一個`記憶體位置`的`值`上

補充:嚴格來說(`Call By Adress`)是不正統的說法,其實傳址也是傳值但傳的是`記憶體位置`,(感謝 CF 提醒)

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627835_01874.gif

  1. 傳參考(Call By Reference)

    是把記憶體位置傳到 移到另一個記憶體位置上 (可看作同一個物件)

https://dotblogsfile.blob.core.windows.net/user/%E4%B9%9D%E6%A1%83/e39d0fd8-5258-4484-949c-3019082ff20e/1519627909_09266.gif

在C#廣義來說

  • 基本型別 Struct (int,double,float,byte ...) 可看作 傳值

  • 一般型別 Class (自訂Class ,SqlConnection....) 可看作 傳址 更精確來說是傳Stack的值(指向Heap的記憶體位置)

在C#中並沒傳參考,只有傳值和傳址

此文同步發布 : https://dotblogs.com.tw/daniel/2018/02/26/150443


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
神Q超人
iT邦研究生 5 級 ‧ 2018-04-09 01:30:10

fysh711426所以我說,為什麼每個人都可以那麼會用小畫家/images/emoticon/emoticon37.gif

石頭 iT邦高手 1 級 ‧ 2018-04-09 09:35:51 檢舉

小畫家功能精簡 使用起來方便 深受工程師喜愛/images/emoticon/emoticon07.gif

哈哈哈,對阿
小畫家很好用,還有賴的截圖功能,可以拉框線打字。

0
CF
iT邦新手 5 級 ‧ 2018-05-06 03:58:53

我是用 c 語言的觀點去看的,我認為應該沒有叫做 call by address 的說法,正確應該叫做 call by value of pointer,不曉得樓主的看法是?

石頭 iT邦高手 1 級 ‧ 2018-05-06 07:44:12 檢舉

正統來說C語言只有 pass by value,的確沒有 call by address這個方式,會說 call by address 一般是為教學方便。
這個部份我會在文章中做補充 感謝提醒

我要留言

立即登入留言