史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   矩陣引入函數時跟指標的差別?? (http://forum.slime.com.tw/thread221750.html)

a19870504 2007-12-07 09:17 PM

矩陣引入函數時跟指標的差別??
 
小弟有上知識小爬了一下文 是了解了指標他最大的功用在哪裡...

但是我一直想不透的是系統的運作...

普通的陣列引入函數時 為什麼會是把整個陣列的值都複製進去??

那用陣列指標引入函數 只是引入第一個陣列的位址 為什麼整個陣列的值都可以運用??

這是小弟的想法 但不知道答案是不是這樣?? 想要確認一下

因為記憶體記憶資料是線性的方式記憶

所以當沒有定義指標的矩陣引入函數時 代表是將整個陣列的資料都要引入進去

所以才需要複製整個陣列進去,也才可以運用陣列的資料?系統也才知道陣列裡其他資料所指的位址

當據有指標的陣列引入時 引入的是第一個陣列的位址 因為記憶資料是線性方式記憶

所以引入第一個位址之後的陣列範圍內都一定是陣列的資料 所以不比整個陣列都複製到函數內

只要函數裡的程式有需要在依照第一個位址開始找尋其他資料的位址 所以不用整個複製進去

請問是這樣嗎?? 有錯請大力的糾正我吧 指標真是很抽象的東西.......

當指標+陣列+函數 天阿 天昏地暗 :on_77:

mini 2007-12-08 05:52 PM

看你要複雜化 還是 簡單化
雖然你沒說是什麼語言
但應該是指 c/c++

指標是用來存放 記憶體位址 的變數
陣列是一 連續性的記憶體位址
再來是 編譯器
在設計時就已經做好了一堆規範(比如常用的ANSI)
所以 編譯器 懂得這一行這一句如何加工

而你指的 "複製" 與 "拿來使用"
就是程式語言裡指的
Call by value

Call by reference (又稱為call by address,或Call by location)
要講詳細不如自己看書
簡單講就是
Call by value 編譯器會把這一段做 複製的加工
(所謂 加工 就是雖然只是一句指令,其實會翻譯成一推的組合語言指令)
Call by reference 編譯器會把這一段做 記憶體位址的提供

當你提供了 陣列的開頭記憶體位址
不就可以
推算出整個陣列 (因為是連續的)
所以指標如果存放了
陣列的開頭記憶體位址
此時 指標 就相當於 整個陣列

此時 這個指標 就是這個記憶體變數(這個陣列)的別名
(別名: 可以比喻成藝人的藝名,本名與藝名 都是指這個人)

其實用講的不如用畫的
會比較易懂
要搞清楚
還是建議你看一本基本的
計算機概論
會比較好


所有時間均為台北時間。現在的時間是 07:41 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1