Array f'C

introduzzjoni

Fi kliem sempliċi, an firxa hija grupp ta 'varjabbli or l- ġbir lineari ta 'elementi simili.

Minn "elementi simili" irridu nfissru d-data kollha hija tal- l-istess tip ta' data li jista 'jkun jew int, char, float, double, eċċ Jekk ngħidu, xi dejta f'firxa hija tat-tip 'float' u l-bqija hija tat-tip 'char', dan mhux validu.

Eżempju, int x [5];

L-eżempju ta' hawn fuq jiddikjara firxa tat-tip 'int' li hija ġabra ta' 5 elementi.

Array f'C

Għaliex Array f'C?

Il-firxa hija metodu li jista 'jagħmel il-problemi kumplessi tagħna f'oħrajn aktar sempliċi. Ejja ngħidu li student jeħtieġ li jaħżen marki ta '10 suġġetti u jikkalkula l-perċentwal ġenerali tiegħu. Għalhekk, id-dikjarazzjoni ta '10 varjabbli differenti għal kull suġġett mhix impossibbli iżda kompitu akbar, u x'jiġri jekk in-numru ta' suġġetti jmur għal 50 jew saħansitra aktar. Hawnhekk, il-firxa hija soluzzjoni għal problemi bħal dawn.

Dikjarazzjoni ta' Array f'C

Sintassi:

datatype array_ name [array_ size];

Eżempju: int n[10];

Fid-dikjarazzjoni ta' hawn fuq, firxa tat-tip 'int' hija ddikjarata.

n[ ] tintuża biex tindika firxa 'n', li tfisser 'n' hija firxa.

Array jista 'jiġi ddikjarat f'ħafna modi, iżda hemm xi modi li mhumiex validi biżżejjed biex tiddikjara array. Xi wħud mid-dikjarazzjonijiet validi u invalidi huma miktuba hawn taħt.

int n[10]; firxa tat-tip 'int' hija ddikjarata ta' daqs 10 jiġifieri, 'n' array hija ġabra ta' 10 elementi tat-tip 'int'.

 

int n[ ]; huwa invalidu dikjarazzjoni minħabba li d-daqs tal-array ma jingħatax. Huwa importanti li tiddikjara array bid-daqs tagħha għaliex il-kompilatur jeħtieġ li jalloka spazju fil-memorja għall-array li mhux possibbli jekk iċ-ċingi '[ ]' huma vojta. Id-dikjarazzjoni 'int n[10]' hija valida biżżejjed għax issa l-kompilatur isir jaf id-daqs tal-array bl-għajnuna tan-numru ta' elementi li jista' jaħżen u mbagħad jalloka spazju għal 10 elementi fil-memorja.

 

int n[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; hija validu dikjarazzjoni. Id-dikjarazzjoni ssir u l-valuri għall-array huma assenjati simultanjament u l-array hija inizjalizzat kif ukoll. Allura, nistgħu naqbżu d-daqs tal-firxa minħabba li l-kompilatur isir jaf dwar id-daqs mill-valuri assenjati jiġifieri, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.

 

int n[10 ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; huwa wkoll ta ' validu inizjalizzazzjoni.

 

int n[10 ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; is mhux validu inizjalizzazzjoni minħabba li l-elementi fil-firxa huma akbar mid-daqs imdaħħal u dan jagħti żball.

12345678910

 

 

M'hemmx spazju għall-bqija tal-elementi fil-firxa.

 

int n[10 ] = {1, 2, 3, 4, 5, 6, 7 } ; hija validu inizjalizzazzjoni. F'każijiet bħal dawn meta l-elementi fil-firxa huma inqas mid-daqs tagħhom allura jkun hemm 0 mimlija fil-blokki li jifdal.

1234567000

 

Jekk ma jkunx hemm inizjalizzazzjoni mad-dikjarazzjoni, hemm valuri taż-żibel jiġifieri, 0 fil-blokki kollha.

Dikjarazzjoni ta' Array f'C

Indiċi ta' Array f'C

Kull element f'firxa għandu l-valur tal-indiċi partikolari tiegħu.

int x[5]={10, 20, 30, 40, 50};

Elementi1020304050
indiċi01234

          

Il-firxa 'x' hija rappreżentata hawn fuq bl-elementi tagħha u l-valuri tal-indiċi. 0,1,2,3,4 huma l-'indiċijiet".

Valur tal-indiċi tal-ewwel element huwa dejjem 0 jew

L-indiċi ta’ firxa jibda b’0.

Bl-għajnuna ta 'dawn l-indiċijiet, nistgħu naċċessaw b'mod każwali kwalunkwe element tal-firxa.

Sintassi: array _name [ indiċi]

Il-firxa 'x' miktuba hawn fuq għandha 5 elementi. Allura, nistgħu naċċessaw dawn l-elementi bħala:

x[0] se jirritorna l-valur tal-ewwel element jiġifieri, 10.

Bl-istess mod,
x[1] huwa 20
x[2] huwa 30
x[3] huwa 40
x[4] huwa 50

Indiċi ta' Array f'C

Barra minn hekk, x[0], x[1], huma l-istess bħall-varjabbli li konna nużaw sa issa. Nistgħu jassenjaw valuri għal dawn il-varjabbli simili wkoll x[1]=89; kif nagħmlu ma’ varjabbli oħra (x=5;, y=10;, eċċ.)

Assenja valuri lil Array f'C

It-terminu 'inizjalizzazzjoni' diskuss hawn fuq se jsir ċar b'dan is-suġġett.

Il-valuri jistgħu jiġu assenjati lil firxa b'modi differenti. L-ewwel mod huwa li tassenja l-valuri lill-elementi tal-firxa matul id-dikjarazzjoni.

int n[ ] = {1, 2, 3, 4, 5 } ; billi niktbu dan, qed niddikjaraw u nassenjaw valuri lill-array fl-istess ħin. Għalhekk, għandna initialized firxa.

It-tieni mod huwa li tiddikjara l-array l-ewwel u mbagħad tassenja l-valuri separatament.

int n[3]; Din id-dikjarazzjoni tiddikjara firxa iżda l-valuri għadhom mhumiex assenjati. 'int n[3]' se jalloka spazju ta' 3 interi fil-memorja iżda sakemm u sakemm ma jkunx hemm assenjazzjoni ta' valuri, dawk l-ispazji jibqgħu vojta. Biex inizjalizzaha, irridu nassenjaw valur għal kull wieħed mill-elementi tal-array simili,

n[0]=2;

n[1]=9;

n[2]=6;

Dan huwa l-istess kif aħna niddikjaraw varjabbli u mbagħad nassenjaw valuri lilhom.

int x, y;

x = 89;

y=10;

Fil-qosor, iż-żewġ metodi kif jiġu assenjati valuri lil firxa huma:

Metodu:1 Id-dikjarazzjoni u l-assenjazzjoni jsiru fl-istess ħin.

int n[ ]= {1,2,3,4,5 };

Metodu: 2 L-ewwelnett, iddikjara l-firxa bid-daqs tagħha. Assenja l-valuri lill-elementi tal-firxa aktar tard.

int n[ 3];

n[0]=5;

n[1]=8;

n[2]=4;

 

L-array jista' jkun ta' kwalunkwe tip ta' data int, char, float, eċċ. Ara l-eżempji ta' arrays ta' tipi differenti ta' data.

float f[ ]={ 1.1, 2.2, 3.3};

char c[ ]={'a', 'b', 'c'};

 

Ejja nagħmlu programm biex nikkalkulaw il-marki medji u l-perċentwal ġenerali ta 'student fil-5 suġġetti tiegħu. Kull suġġett huwa ta’ 100 marka u s-suġġetti huma l-Fiżika, il-Kimika, il-Matematika, l-Ingliż, u l-Kompjuter.

PROGRAM

#inkludi int main() { int M[5]; galleġġjant A; printf("Daħħal il-marki fil-Fiżika:"); scanf ("%d",&M[0]); printf("Daħħal il-marki fil-Kimika:"); scanf("%d",&M[1]); printf("Daħħal il-marki fil-Matematika:"); scanf ("%d",&M[2]); printf("Daħħal il-marki bl-Ingliż:"); scanf("%d",&M[3]); printf("Daħħal il-marki fil-Kompjuter:"); scanf ("%d",&M[4]); int somma=( M[0]+M[1]+M[2]+M[3]+M[4]); A=somma/5.0; printf("Marki medji:%.2f",A); perċentwali float=(somma/500.0)*100; printf("\nPerċentwal=%.2f",perċentwal); ritorn 0; }

 

RIŻULTAT:

Assenja valuri lil Array f'C

Eżempju relatat mal-ħajja prattika tagħna jagħmel il-kunċett aktar ċar u fehim saħansitra aħjar.

int M[5]; hawn, aħna biss tiddikjara firxa ta 'daqs 5 mingħajr initializing għax irridu li l-utent biex idaħħal id-data tiegħu/tagħha stess.

Wara dan, filwaqt li nieħdu kontribut mill-utent, ittrattajna elementi ta 'firxa b'mod eżattament simili kif konna ttrattati varjabbli normali. &marki[0], &marki[1] jirrappreżentaw l-indirizzi tal-marki[0], marki[1] rispettivament.

Il-bqija tal-kodiċi qed ikollu l-operazzjoni li hija meħtieġa biex tikkalkula l-marki medji u l-perċentwali.

A=somma/5.0; 'A' hija ddikjarata bħala varjabbli tat-tip float minħabba li l-medja tal-valuri interi tista' tkun float wkoll. Huwa għalhekk li d-diviżjoni ta ''somma' ssir b'5.0 sabiex tirritorna valur float li mbagħad jiġi assenjat għal 'A'. Imma jekk is-"somma" hija diviża b'5 allura se tagħti valur sħiħ bħala riżultat.

Użu ta' for loop f'Arrays f'C

Loops b'arrays huma l-eħfef mod biex jiġu ttrattati problemi diffiċli.

PROGRAM

#inkludi int main( ) { int i,j; int A[5]; for(i=0; i<5;i++) { printf("Daħħal il-valur ta' n[%d]",i); scanf ("%d",&A[i]); } għal(j=0;j<5;j++) { printf("A[%d]=%d\n",j,A[j]); } ritorn 0; }

 

RIŻULTAT:

Użu ta' for loop f'Arrays f'C

Il-kodiċi ta 'hawn fuq huwa l-aktar approċċ sempliċi biex tagħmel inti familjari ma' loops u arrays. Aħna ddikjarajna żewġ varjabbli 'i","j'bħala iteraturi u firxa 'A'ta' daqs 5. Il-kodiċi huwa sempliċi, l-ewwelnett irridu ndaħħlu d-dejta tagħna, u mbagħad id-dejta mdaħħla tintwera bħala output.

L-ewwel 'for' loop li jkollu 'i' iteratur huwa biex jieħu inputs mill-utent.

għal(i=0; i<5;i++) 'i' hija inizjalizzata b'0 peress li l-indiċi tal-bidu tal-firxa huwa 0 u jitla' sa 4.

L-istess ma għal(j=0;j<5;j++) id-dikjarazzjoni 'j' tibda minn 0 u tispiċċa f'4. Din il-linja 'for' se turi d-dejta mdaħħla mill-utent f'sekwenza.

Xejn mhu kumpless kif nistgħu nosservaw fit-taqsima tal-output. Kif diġà ntqal, ittratta l-elementi tal-firxa bħala varjabbli normali u l-affarijiet se jmorru kif xieraq.

Nota: L-allokazzjoni tal-memorja f'firxa hija b'mod kontinwu. Pereżempju, jekk l-indirizz tal-ewwel element ta’ firxa ta’ indiċi 0 huwa 22334456 allura l-valur tal-indirizz tat-tieni element bl-indiċi 1 ikun 22334460 (22334456+4; peress li 4 huwa d-daqs ta’ numru sħiħ) u t-tielet se jkun 22334464 u l-bqija. Huwa importanti li wieħed jinnota li l-elementi kollha ta 'firxa huma maħżuna flimkien f'ordni serjali.

Pointer ta' Array f'C

Kull kunċett f'lingwa ta 'programmar huwa żviluppat biex jagħmel l-għodod l-oħra aktar faċli. L-użu tal-firxa fil-pointers huwa suġġett importanti ħafna. Allura, aħna lkoll lestejna bid-dikjarazzjoni u l-inizjalizzazzjoni ta 'firxa. Issa se naraw kif nistgħu nużaw arrays f'pointers. Iżda qabel ma tipproċedi, nittamaw li tkun għaddejt mill-indikazzjonijiet tas-suġġett u tipprattika biżżejjed problemi relatati magħha. Jekk le, allura l-ewwel ċara l-baŜi ta 'pointers biex tikseb fehim aħjar ta' dan il-kunċett interessanti.

Peress li lkoll nafu 'Pointer huwa varjabbli li jindika varjabbli ieħor. Hija taħżen l-indirizz tal-valur tal-varjabbli li tipponta għaliha. Say 'A' punti għal 'B' tfisser kemm 'A' kif ukoll 'B' huma varjabbli iżda 'A' huwa pointer. Il-valur ta' 'A' huwa l-valur ta' l-indirizz ta' 'B'.

Ejja ngħidu li għandna firxa bl-isem 'n“. 'p'hija varjabbli li tindika 'n' li tfisser 'p' hija indikatur għal 'n'. Issa l-firxa tikkonsisti f'numru ta 'elementi sabiex tqum il-mistoqsija dwar liema element tal-firxa, pointer 'p' punti.

Pointer 'p' fih il-valur tal-indirizz tal-ewwel element jiġifieri n[0] tal-array.

Il-pointer ta 'array huwa l-pointer għall-ewwel element tiegħu jew l-isem tal-array huwa l-pointer għall-ewwel element tal-array.

int student [5]; int *p; p=&student[0];

 

Issa ejjew nifhmu l-kodiċi miktub hawn fuq.

'student' huwa firxa u 'p' huwa pointer għall-array 'student' allura 'p' jindika student[0]. Huwa għalhekk li l-istqarrija p=&student[0]; jassenja l-valur ta' l-indirizz ta' l-ewwel element ta' l-array għal 'p'.

int student [5];

int *p;

p=student;

Il-kodiċi miktub hawn fuq huwa validu wkoll. L-istqarrija p=student; jaħdem l-istess bħal dak preċedenti. L-isem tal-array innifsu huwa l-indikatur għall-ewwel element tal-array.

p=student; din id-dikjarazzjoni tassenja wkoll 'p' l-indirizz tal-ewwel element tal-array 'student'.

Peress li 'p' tindika l-ewwel element tal-array allura l-valur ta' '*p' se jkun ugwali għall-ewwel element tal-firxa jiġifieri *p= student[0]

Xi ngħidu dwar il-bqija tal-elementi tal-firxa allura?

Jekk '*p' tirreferi għall-ewwel element tal-firxa allura *(p+1) jirreferi għat-tieni element tal-firxa, *(p+2) jirreferi għat-tielet element tal-firxa, eċċ.

Allura, aħna lest il-parti tat-teorija ta 'pointers relatati mal-firxa. Issa, ħares lejn il-programmi li jagħtuk fehim aħjar.

PROGRAM

#inkludi int main() { int A[5]={12,24,36,48,60}; int *p; int i; p=A; printf("Valur ta' l-indirizz ta' A[0]: %d\n",p); for(i=0;i<5;i++) { printf("Indirizz ta' A[%d]: %d\n",i,&A[i]); } ritorn 0; }

 

RIŻULTAT:

Pointer ta' Array f'C

Allura l-ewwel nett aħna ppruvat li l-isem tal-firxa huwa l-pointer għall-ewwel element tal-firxa. Kif l-istqarrija p=A; jagħti l-output li huwa ugwali għall-valur tal-indirizz tal-ewwel element.

Wara li nużaw il-linja 'for' nipprintjaw il-valur tal-indirizz ta' kull element li juri biċ-ċar li l-valuri kollha huma f'ordni dejjem tiżdied b'differenza 4.

PROGRAM

#inkludi int main() { int A[5]={12,24,36,48,60}; int *p; int i; p=A; for(i=0;i<5;i++) { printf("Valur ta' *(p+%d)=%d\n",i,*(p+i)); } ritorn 0; }

 

RIŻULTAT:

Array f'Ċ Eżempju

Peress li 'p' qed tipponta lejn l-ewwel element tal-array, għalhekk *p jew *(p+0) fih il-valur ta' A[0]. Bl-istess mod, *(p+1) hija ugwali għal A[1] u l-bqija kif muri fit-tieqa tal-output.

Ħalli kumment

Dan is-sit juża Akismet biex inaqqas l-ispam. Tgħallem kif il-kumment tiegħek huwa pproċessat.