[Powered by Google Translate] Ligean ar labhairt faoi arrays. Bheadh ​​sin, cén fáth ba mhaith linn riamh a arrays úsáid? Bhuel a ligean le rá go bhfuil tú clár a bhfuil gá lena stóráil 5 IDs mac léinn. D'fhéadfadh sé réasúnach a bheith 5 athróg ar leith. Ar chúiseanna beidh orainn a fheiceáil i beagán, beidh muid tús a chur comhaireamh ó 0. Beidh na hathróga beidh orainn id0 slánuimhir, id1 o, agus mar sin de. Beidh aon loighic ba mhaith linn a dhéanamh ar Uimhir le haitheantas ar mhic léinn gá a chóipeáil agus a ghreamú do gach ceann de na IDs mac léinn. Má theastaíonn uainn a sheiceáil a tharlaíonn mic léinn a bheith i CS50, beidh orainn gá ar dtús féachaint an léiríonn id0 an mac léinn ar an gcúrsa. Ansin a dhéanamh mar an gcéanna do na mac léinn eile, beidh orainn gá a chóipeáil agus a ghreamú an cód le haghaidh id0 agus in ionad gach tarluithe de id0 le id1 agus mar sin do id2, 3, agus 4. Chomh luath agus a éisteacht leat gur gá dúinn a chóipeáil agus a ghreamú, ba chóir duit tosú ag smaoineamh go bhfuil réiteach níos fearr. Anois, cad más rud é tuigeann tú ní gá duit 5 IDs mac léinn ach 7? Ní mór duit dul ar ais i do cód foinse agus cuir i id5, ar id6, agus cóipeáil agus greamaigh an loighic le seiceáil a dhéanamh más rud é go mbaineann na IDs don rang do na 2 IDs nua. Níl aon rud a nascadh go léir na IDs le chéile, agus mar sin níl aon bhealach ar iarraidh an clár seo a dhéanamh le haghaidh IDs 0 trí 6. Bhuel anois tuigeann tú go bhfuil tú 100 IDs mac léinn. Tá sé seo ag tosú a bhfuil cuma níos lú ná idéalach chun a dhearbhú go leithleach gach ceann de na IDs, agus cóipeáil agus greamaigh aon loighic do na IDs nua. Ach b'fhéidir tá rún daingean againn, agus a dhéanaimid é do gach 100 mac léinn. Ach cad más rud é nach bhfuil a fhios agat cé mhéad mac léinn ann i ndáiríre? Tá ach roinnt mac léinn n agus tá do chlár a iarraidh ar an úsáideoir cad é n. Uh OH. Ní hé seo an dul ag obair go han-mhaith. Do chlár oibreacha ach maidir le roinnt ar líon de shíor mac léinn. Is é Réiteach gach ceann de na fadhbanna ar an áilleacht na arrays. Mar sin, cad eagar? I roinnt teangacha cláir a d'fhéadfadh cineál sraith a bheith in ann a dhéanamh le beagán níos mó, ach anseo beidh muid ag díriú ar struchtúr an sraith bunúsach sonraí a díreach mar a mbainfidh tú é a fheiceáil i C. Tá sraith amháin bloc mór de chuimhne. Sin é. Nuair a rá linn a bheith againn le sraith de 10 slánuimhreacha, ciallaíonn sé ach tá roinnt bloc de chuimhne go mór go leor chun a shealbhú 10 slánuimhreacha ar leith. Ag glacadh leis go bhfuil slánuimhir 4 bytes, ciallaíonn sé seo go le sraith de 10 slánuimhreacha Is thréimhse leanúnach de 40 bytes i gcuimhne. Fiú nuair a úsáideann tú arrays iltoiseacha, ach ní bheidh muid ag dul isteach agus a anseo, tá sé fós ach bloc mór de chuimhne. Is é an nodaireacht iltoiseach ach áisiúil. Má tá tú 3 de 3 sraith iltoiseach na slánuimhreacha, ansin beidh do chlár i ndáiríre a chóireáil ach seo mar bhloc mór de 36 bytes. Is é an líon iomlán na slánuimhreacha 3 huaire 3, agus tógann gach slánuimhir suas 4 bytes. A ligean ar ghlacadh le breathnú ar sampla bunúsach. Is féidir linn a fheiceáil anseo 2 bealaí éagsúla arrays dhearbhú. Beidh muid ag trácht 1 de iad amach as an gclár a thiomsú ó againn a dhearbhú x dhó. Beidh muid a ghlacadh le breathnú ar roinnt de na difríochtaí idir na 2 cineálacha dearbhuithe i giotán. Tá an dá na línte seo a dhearbhú le sraith de N méid, áit a bhfuil muid shainiú # N mar 10. D'fhéadfadh muid díreach mar a d'iarr go héasca an t-úsáideoir le haghaidh slánuimhir dearfach agus a úsáid go slánuimhir le roinnt gnéithe inár eagar. Cosúil ár shampla aitheantais mic léinn roimh, is é seo cineál cosúil dhearbhú 10 go hiomlán ar leith athróga samhailfhadú; x0, x1, x2, agus mar sin de suas go dtí Xn-1. Neamhaird na línte ina dhearbhú againn ar an raon, faoi deara na lúibíní cearnacha slán taobh istigh den haghaidh lúb. Nuair a scríobh rud éigin cosúil le x [3], a beidh mé a léamh díreach mar x scriosaidh 3, Is féidir leat smaoineamh ar sé cosúil ag iarraidh an x3 samhailfhadú. Fógra ná le sraith de mhéid N, ciallaíonn sé seo go bhfuil líon taobh istigh de na lúibíní, a beidh muid ag glaoch ar an innéacs is féidir a bheith, rud ar bith ó 0 go N-1, a bhfuil iomlán de innéacsanna N. Smaoineamh ar conas a oibríonn seo i ndáiríre cuimhnigh go bhfuil an sraith bloc mór de chuimhne. Ag glacadh leis go bhfuil slánuimhir 4 bytes, is é an x ​​sraith iomlán bloc 40 beart de chuimhne. Mar sin, tagraíonn x0 do na 4 an chéad bytes an bhloic. X [1] Tagraíonn an 4 eile bytes agus mar sin de. Ciallaíonn sé seo go bhfuil an tús x fad an chláir riamh ní mór súil a choinneáil ar. Más mian leat úsáid a bhaint as x [400] a fhios, ansin ar an gclár go bhfuil sé seo comhionann go dtí díreach 1,600 bytes tar éis thús x. Where'd a fháil againn 1,600 bytes ó? Tá sé díreach 400 uair 4 bytes an gceann. Sula ag bogadh ar aghaidh, tá sé an-tábhachtach a thuiscint go i C níl aon forfheidhmiú an t-innéacs a úsáid againn ar an eagar. Is é ár bloc mór ach 10 slánuimhreacha fada, ach beidh aon rud yell ag dúinn má scríobh againn x [20] nó fiú x [-5]. Ní dhéanann an innéacs fiú a bheith ina uimhir. Is féidir é a aon léiriú treallach. Sa chlár úsáidimid an i athróg ón haghaidh lúb ar innéacs ar an eagar. Is é seo an patrún an-choitianta, looping as i = 0 le fad an eagar, agus ag baint úsáide as i mar an t-innéacs le haghaidh eagar. Ar an mbealach seo lúb tú go héifeachtach thar an eagar ar fad, agus is féidir leat a shannadh ceachtar do gach láthair i sraith nó í a úsáid le haghaidh roinnt ríomh. Sa chéad lúb, a thosaíonn mé ag 0, agus mar sin beidh sé a shannadh go dtí an láthair 0 sa eagar, an luach 0 amanna 2. Ansin a shannadh i incrimintí, agus táimid ag an láthair den chéad uair sa réimse an luach 1 uair 2. Ansin incrimintí i arís agus mar sin de suas go dtí linn a shannadh chun seasamh N-1 i raon an luach N-1 uair 2. Mar sin, tá cruthaithe againn le sraith leis an 10 uimhreacha chéad fiú. Bheadh ​​B'fhéidir go evens a bheith ina ainm beagán níos fearr don athróg ná x, ach bheadh ​​rudaí a thabhairt ar shiúl. An dara lúb priontaí ansin ach na luachanna atá againn cheana féin a stóráil taobh istigh den eagar. A ligean ar iarracht a reáchtáil an clár leis an dá chineál dearbhuithe eagar agus chur le breathnú ar an t-aschur an chláir. Chomh fada agus is féidir linn a fheiceáil behaves, an clár ar an mbealach céanna le haghaidh an dá chineál dearbhuithe. Ligean ar ghlacadh freisin le breathnú ar cad a tharlaíonn má athraíonn muid an lúb chéad nach stopann ag N ach a rá in áit 10,000. Bealach thar dheireadh na eagar. Oops. B'fhéidir tá tú ag feiceáil roimh seo. Ciallaíonn locht deighilt tá do chlár crashed. Tosaíonn tú ag féachaint ar na nuair dteagmháil leat réimsí chuimhne ní ba chóir duit a bheith touching. Anseo tá muid ag touching 10,000 áiteanna níos faide ná tús an x, atá evidently áit i gcuimhne nár cheart dúinn a bheith touching. Mar sin, an chuid is mó de dúinn nach mbeadh dócha a chur thaisme 10,000 ionad N, ach cad má dhéanann muid rud éigin níos subtle cosúil le rá scríobh níos lú ná nó cothrom le N sa riocht lúb le haghaidh seachas níos lú ná N. Cuimhnigh go bhfuil eagar ach innéacsanna ó 0 go N-1, rud a chiallaíonn go bhfuil innéacs N thar dheireadh na eagar. Ní fhéadfadh an clár tuairteála sa chás seo, ach tá sé fós earráid. Go deimhin, tá an earráid seo chomh coitianta go bhfuil sé ainm féin, eis faoi 1 earráid. Sin é an Basics. Mar sin, cad iad na difríochtaí móra idir an 2 cineálacha dearbhuithe eagar? Is é ceann difríocht nuair a théann an bloc mór de chuimhne. Sa dearbhú chéad, a beidh mé ag glaoch ar an cineál lúibín-eagar, cé go bhfuil sé seo trí aon mhodh ainm traidisiúnta, beidh sé dul ar an chruach. De bharr an méid sa dara fomhír, a beidh mé ag glaoch ar an cineál pointeoir-eagar, beidh sé dul ar an gcarn. Ciallaíonn sé seo nuair na tuairisceáin feidhme, beidh an sraith lúibín a deallocated go huathoibríoch, ach mar ní mór duit glaoch explicitily saor in aisce ar an raon pointeoir nó eile a bhfuil tú ar sceitheadh ​​cuimhne. Ina theannta sin, nach bhfuil an eagar lúibín iarbhír athróg. Tá sé seo tábhachtach. Tá sé ach siombail. Is féidir leat smaoineamh ar é mar leanúnach go roghnaíonn an Tiomsaitheoir ar do shon. Ciallaíonn sé seo nach féidir linn a dhéanamh rud éigin cosúil le x + + leis an gcineál lúibín, cé go bhfuil sé seo breá bailí leis an gcineál pointeoir. Is é an cineál pointeoir athróg. Maidir leis an chineál pointeoir, ní mór dúinn 2 mbloic ar leithligh de chuimhne. Tá an x ​​athróg féin atá stóráilte i an chairn agus tá sé ach pointeoir amháin, ach tá an bloc mór de chuimhne atá stóráilte ar an gcarn. An x athróg ar an chruach siopaí ach an seoladh den bhloc mór de chuimhne ar an gcarn. Is é ceann impleacht seo leis an méid an oibreora. Má iarraidh ort le haghaidh an méid de na eagar lúibín, beidh sé a thabhairt duit an méid de na bloic mór de chuimhne, rud éigin cosúil le 40 bytes, ach má iarrann tú an méid de na chineál pointeoir de eagar, beidh sé a thabhairt duit an méid de na x athróg féin, atá ar an fearas is dócha ach 4 bytes. Ag baint úsáide as an cineál pointeoir-eagar, tá sé dodhéanta a iarraidh go díreach le haghaidh an méid de na bloic mór de chuimhne. Níl sé seo de ghnáth i bhfad de srian ó againn go han-annamh a iarraidh ar an méid den bhloc mór de chuimhne, agus is féidir linn a ríomh de ghnáth é más gá dúinn é. Ar deireadh a tharlaíonn, an sraith scriosaidh a chur ar fáil dúinn le aicearra chun initializing eagar. A ligean ar a fheiceáil conas a d'fhéadfadh muid a scríobh an chéad 10 slánuimhreacha fiú ag baint úsáide as an initilization aicearra. Leis an sraith pointeoir, nach bhfuil ann ar bhealach a dhéanamh aicearra mar seo. Is é seo ach a thabhairt isteach chun an méid is féidir leat a dhéanamh le arrays. Léiríonn siad suas i gclár beagnach gach scríobh tú. Súil go dtosnódh is féidir leat a fheiceáil anois ar bhealach níos fearr a dhéanamh leis an mac léinn IDs mar shampla ó thús na físeáin. Is é mo ainm Rob Bowden, agus tá sé seo CS50.