ድርድር በኮምፒተር ፕሮግራሞች ውስጥ በጣም ከተዋቀሩ የተዋቀሩ የመረጃ ማከማቻዎች ዓይነቶች አንዱ ነው ፡፡ የእነሱ አሠራር በክፍል ዘዴዎች እና ተግባራት ውስጥ በተተገበሩ የተለያዩ ስልተ ቀመሮች ሊከናወን ይችላል። በዚህ መሠረት ብዙውን ጊዜ ድርድርን ወደ ተግባር ለማለፍ ይጠየቃል። ይህንን ተግባር ለማከናወን የሚረዱ ዘዴዎችን በመምረጥ ረገድ ሲ እና ሲ ++ ቋንቋዎች ትልቅ ነፃነትን ይሰጣሉ ፡፡
አስፈላጊ ነው
የ C እና C ++ ቋንቋዎች አቀናባሪዎች።
መመሪያዎች
ደረጃ 1
የተስተካከለ መጠን ድርድርን ወደ ተግባር ይለፉ። ተገቢውን ዓይነት ክርክር ለመያዝ የተግባሩን የመጀመሪያ ንድፍ ይለውጡ። ለምሳሌ ፣ የሦስት አካላት የቁጥር እሴቶችን ብዛት እንደ መለኪያን የሚወስድ ተግባር መግለጫ ይህን ይመስላል።
ባዶ የ ArrayFunction (int aNumbers [3]);
እንዲህ ዓይነቱ ተግባር አንድን ድርድር እንደ ክርክር በቀጥታ በማስተላለፍ ይጠራል-
ባዶ የሆነ SomeFunction ()
{
int aNumbers = {1, 2, 3};
ArrayFunction (ቁጥር);
}
የተላለፈው መረጃ በቁልሉ ላይ ተቀድቷል ፡፡ በተጠራው ተግባር ውስጥ ድርድርን ማሻሻል ምንጩን አይለውጠውም።
ደረጃ 2
ተለዋዋጭ ርዝመት ድርድሮችን ወደ ተግባር ይለፉ ፡፡ ይህንን ለማድረግ በቀላሉ የተጓዳኙን ክርክር ስፋት አይግለጹ-
ባዶ የ ArrayFunction (int aNumbers );
ባለብዙ ልኬት ድርድር እንዲሁ በተመሳሳይ መንገድ ሊተላለፍ ይችላል (የመጀመሪያው “ልኬት” ብቻ ተለዋዋጮች ሊሆኑ ይችላሉ)
ባዶ የ ArrayFunction (int aNumbers [3] [2]);
እነዚህ ተግባራት ልክ እንደ መጀመሪያው ደረጃ በተመሳሳይ መንገድ ይጠራሉ ፡፡
በአንድ ተግባር ውስጥ ተለዋዋጭ ርዝመት ያላቸውን ድርድሮች በትክክል ለማስኬድ ፣ የእነሱን ንጥረ ነገሮች ብዛት በተጨማሪ መለኪያ በኩል በግልፅ ማለፍ አለብዎት ፣ ወይም በእራሳቸው አካላት እሴቶች ላይ ገደቦችን የሚጥሉ ስምምነቶችን መጠቀም አለብዎት። የድርድሩ መጨረሻ ምልክት መሆን አለበት)።
ደረጃ 3
ድርድርን በጠቋሚ ይለፉ። የተግባሩ ክርክር ከድርድሩ አካላት ጋር ከሚዛመድ ዓይነት ጋር ዋጋ ያለው ጠቋሚ መሆን አለበት። ለምሳሌ:
ባዶ የ ArrayFunction (int * pNumbers);
በአንድ ተግባር ውስጥ የውሂብ ተደራሽነት ከድርድር አካላት ጋር አብሮ ለመስራት እና የአድራሻ ሂሳብን በመጠቀም በሰነዱ ውስጥ ሊከናወን ይችላል-
ባዶ የ ArrayFunction (int * pNumbers)
{
pNumbers [0] = 10; // ወደ አባል 0 መድረስ
* (pNumbers + 1) = 20; // ወደ ንጥል 1 መድረስ
}
ጠንቀቅ በል! ተግባሩ የተላለፈው የመረጃው ቅጅ ሳይሆን ጠቋሚው ስለሆነ የመጀመሪያው ድርድር ይቀየራል ፡፡
የዚህ ዘዴ ጥቅም ፍጥነት ፣ የስሌት ሀብቶች ኢኮኖሚ እና የተወሰነ ተጣጣፊነት ነው ፡፡ ስለዚህ ዒላማውን ተግባር ጠቋሚውን ወደ ድርድሩ የዘፈቀደ አካል በማስተላለፍ መደወል ይችላሉ-
ባዶ የሆነ SomeFunction ()
{
int aNumbers = {1, 2, 3};
ArrayFunction (ቁጥር); // ሙሉ ድርድር
ArrayFunction (እና ቁጥሮች) [1]); // ከሁለተኛው አካል ጀምሮ
}
ይህ ዘዴ ብዙውን ጊዜ ተጨማሪ መለኪያ ውስጥ የሚገኙትን ንጥረ ነገሮች ብዛት ማለፍ ወይም የድርድር ማቋረጫን መጠቀምን ያካትታል።
ደረጃ 4
የ “ድርድር” ተግባሩን ወደ ሚያከናውን የመማሪያ ክፍል ነገር ወይም ማጣቀሻ በሆነ መለኪያ መረጃን ወደ ተግባር ያስተላልፉ። እንደነዚህ ዓይነቶቹ ክፍሎች ወይም የክፍል አብነቶች ብዙውን ጊዜ በታዋቂ ቤተ-መጻሕፍት እና ማዕቀፎች ውስጥ ይገኛሉ (QVector in Qt ፣ CArray in MFC ፣ std:: vector in STL, ወዘተ) ፡፡
ብዙውን ጊዜ እነዚህ ክፍሎች ጥልቅ መረጃን በሚቀይርበት ጊዜ ብቻ ጥልቀት ያለው ቅጅ በማከናወን አንድ ግልጽ ያልሆነ የመረጃ ማጋራት ስትራቴጂን ይተገብራሉ (በመፃፍ ላይ ይገለብጡ)። ይህ በተግባሮች እና ዘዴዎች ክርክሮች አማካይነት ብዙ ነገሮችን በማስተላለፍ ረገድም ቢሆን የስሌት ሀብቶችን ፍጆታ ለመቀነስ ያስችልዎታል።
ባዶ የ ArrayFunction (QVector oArray)
{
int nItemCount = oArray.count ();
int nItem = oArray [0];
}
ባዶ የሆነ SomeFunction ()
{
QVector oArray (10);
ለ (int i = 0; እኔ