2015-06-01 6 views
7
var b: array[5, int] 

type 
    ArrRef = ref array[5, int] 

var c : ArrRef 
echo repr(c) # nil 
c = addr b # doesn't compile, says type is Array constructor, expected reference 

निम में, मैं मूल्य से गुजरने के बजाय सरणी के संदर्भ कैसे पारित कर सकता हूं? मेरे पास अब तक के लिए उपरोक्त कोड देखें।निम

उत्तर

9

निम ref एस ढेर पर हैं और उन्हें new के साथ आवंटित किया जाना है। आप केवल ref के रूप में एक स्टैक सरणी का उपयोग नहीं कर सकते क्योंकि यह असुरक्षित होगा: जब सरणी स्टैक से गायब हो जाती है, तो ref कुछ गलत स्मृति को इंगित करता है। इसके बजाय आपके पास दो विकल्प हैं: आप इसके बजाय असुरक्षित ptr एस का उपयोग कर सकते हैं। ref एस के अलावा, वे कचरा नहीं एकत्रित हैं और असुरक्षित सामान के लिए उपयोग किया जा सकता है। वैकल्पिक रूप से आप सीधे bref array बना सकते हैं।