2012-02-02 23 views
5

मैं इस तरह डेल्फी कोड का एक टुकड़ा पढ़ा है को इंगित संकेत की एक सरणी:है कि एक ही सरणी

sample1 = ARRAY[1..80] OF INTEGER; 
psample =^sample1; 

VAR 
    function :ARRAY[1..70] OF psample; 

मेरी समझ से, प्रोग्रामर एक सरणी है कि 70 संकेत दिए गए हैं और प्रत्येक शामिल घोषित करने के लिए कोशिश कर रहा है संकेतक एक नमूना 1 सरणी को इंगित करता है।

तो मैं जब लिखना:

function[1]^[1] := 5; 
function[1]^[2] := 10; 

तो:

function[n]^[1] := 5 
function[n]^[2] := 10; (n = 2 to 70) 

वह सही है?

उत्तर

6

आपके कोड नमूने में कुछ जानकारी की कमी है क्योंकि आप यह नहीं कहते कि function परिभाषित किया गया है। इसका मतलब है कि आप उन निष्कर्षों को नहीं खींच सकते जिन्हें आप आकर्षित करने का प्रयास करते हैं।

बेशक, function पास्कल में एक आरक्षित शब्द है, वह कोड कभी भी संकलित नहीं कर सकता था। अब मुझे लगता है कि चर को f कहा जाता है।

पर विचार करें निम्नलिखित परिभाषा:

type 
    sample1 = array [1..80] of integer; 
    psample = ^sample1; 

var 
    f : array [1..70] of psample; 

यहाँ, sample1 और psample प्रकार हैं। sample1 80 पूर्णांक की सरणी का वर्णन करने वाला प्रकार है। psamplesample1 पर एक सूचक है।

अगला एक चर नाम f परिभाषित किया गया है। यह 70 psample एस की एक सरणी है।

अब, इससे पहले कि आप f[1]^[1] लिखते हैं, तो आपको यह भी विचार करने से पहले, f के तत्वों को कुछ मान असाइन करने की आवश्यकता है।

मान लीजिए कि हमें इसे इस तरह से किया था:

var 
    sample: sample1; 
... 
for i := 1 to 70 do 
    f[i] := @sample; 

अब यह सच हो सकता है कि f[i]^[k] सभी वैध i और j के लिए f[j]^[k] रूप में एक ही पूर्णांक को दर्शाता है। तो जब आप f[1]^[1] := 42 बारे में आप भी f[2]^[1], f[3]^[1] और इतने पर करने के लिए कि मान निर्दिष्ट कर रहे हैं। स्मृति में एक अलग सरणी

var 
    samples: array [1..70] of sample1; 
... 
for i := 1 to 70 do 
    f[i] := @samples[i]; 

अब प्रत्येक f[i] सूचक अंक:

दूसरी ओर आप इस तरह यह कर सकता है। इस मामले f[1]^[1] := 42 बताए में f[2]^[1] का मूल्य या अन्य कोई भी मान संशोधित नहीं करता है। आपके उत्तर के लिए

+0

धन्यवाद डेविड, यह बहुत उपयोगी है। –

2

यह सही है। आपके पास 70 पॉइंटर्स हैं, प्रत्येक 80 पूर्णांक की सरणी को इंगित करता है।

+0

धन्यवाद –

+2

आप प्रश्न के दूसरे भाग का जवाब नहीं दिया। –

संबंधित मुद्दे