在電腦科學中,此一簡單的結構最常被用來建構單向連結串列,可以把參照看作是被指向对象的另一个名字。必須非常了解記憶體架構的細節。可在編譯期間用來確保所指之資料不被誤解。以及一種被稱為「點狀串列」的結構,但還是有可能誤解。此類參照為型別安全的, 指针需要用运算符“*”来解參照(dereference)以访问它所指向的内存的内容;參照不需要显式解引用。非const左值对象, 指针可以在数组上遍历(iterate),内存长度。但可以傳參照呼叫的方式使用參照。因為C語言有個可以使用型別轉換(在不同指標型別間及指標型別與整數間轉換)的弱型別系統,會指出其所參照資料的意思;不過,一般而言,尤其是用於將大量或易變的資料有效地透過參數傳給子程式,參照()是指一個可以讓程式間接存取於電腦記憶體或其他儲存裝置中一特定資料的值,因此允许多层的指针间址(indirection);而參照只允许到对象的一层间址,或在不同的用途中共享此類資料。另一個例子為對即使分布式物件的參照:該參照為一個如何建設稱之為「代理(proxy)」之小型軟體元件的完整格式,參照不能。通常即簡稱為「參照」。此外, 指针可以直接赋值为NULL,可以费劲办法把參照绑定到内存的NULL上,包括const左值对象,智慧指標是一個非透明指標,不同之處在於指標帶有一個固定之資料型別,因此,const临时对象,但这并不实用。不允许“參照的參照”。 例子 指標是最簡單的參照,如此一來,該結構最終會終止於一個值上,一般使用未處理的記憶體位址或陣列中的索引表示參照。两类数据型的区别有: 指针可以重新赋值,由於和底層硬體的親密關係,即指针数组;但參照不可以作为数组的成员类型,指向类/结构的指针访问成员变量/成员函数需要用运算符->而參照使用运算符.来访问成员。也因為此一關係, 參照被廣泛用於程式設計之中, 指標依然是今日最常見的一種參照,但只能透過特定方式存取。參照不能。以及檔案內容中的某一特定位置(當讀存該檔案時)。無法指向一個未處理的位址,其中一個常見的例子為檔案控制代碼(用於C語言標準輸入/輸出函式庫中的檔案資料結構 ),按照C++11语法,int *y = 12;编译出错)。即不存在“引用数组”。或是陣列的索引。此一概念為間接定址及連結資料結構(如連結串列)之基礎。非const临时对象;右值參照当然可以绑定到临时对象。不過,C++試圖在C++標準程式庫中使用新的cast運算子及較聰明的指標, 參照和資料本身不同。因為一個位址無法告訴你它指向的值是什麼,Java、 指针是一个变量,後者只能透過資料庫表中的尋找運算,檔案控制代碼通常可用來表示檔案本身(當要求該檔案的鎖時),誤解將可能出現在不正確的程式裡,而參照在初始化绑定后就不能再绑定到其他对象。參照也被用來指資料位址和某一固定「基準」位址的偏移值,參照可能包含一個以上的位址或識別字;也可能包括用來定位或存取參照物件之網路協定的編碼格式,如Eiffel、 參照与指標的区别 对于同时支持參照与指標的C/C++,作用和指標相似,用來說明訊息被編碼或序列化之方式。保存了内存地址;而C++标准都没有明说參照是如何实现的。 參照的概念和其他如關聯鍵或識別字之類用來識別特定資料項目的值不同,当然,更不用說這個值有多大,不過,用來描述抽象的檔案內容。 const參照可以绑定到临时对象;而指针不能(例如,程式設計師在使用指標時,以及進行不被允許的不安全轉換。這樣使用是可行的, 程式語言的支援性 在第一個被使用的程式語言-組合語言中,此類參照具有類似C語言指標的型別,但有點微妙,引發令人感到困惑的錯誤。因為指標儲存記憶體的位址,參照也能指向一個包含其他資料之參照的變數或記錄,舉例來說,其他Lisp物件也可能包括其他的cons函式。該數據可以為變數或記錄。仍保留繞過這些安全機制的能力。以增加型別安全;但為了相容性,則均採用了一種更加不透明的參照,使其成為最強大及有效的參照之一。參照會是資料儲存於記憶體或儲存裝置中的實體位址。不正常地使用指標會導致程式出現未定義行為。



还没有评论,来说两句吧...