>> [CHWARAE CERDDORIAETH]
>> DOUG LLOYD: pob hawl, felly gadewch i ni siarad am ddadleuon gorchymyn-lein.
Felly, hyd yn hyn yn y cwrs 'n bert llawer eich holl raglenni
yn ôl pob tebyg wedi dechrau fel this-- prif ddi-rym int.
Rydym wedi bod yn casglu mewnbwn defnyddwyr os byddwn ei angen
yn ein rhaglenni, megis y Rhaglen Mario, er enghraifft,
gan yn-raglen ysgogiadau.
Nid ydym wedi ei angen i addasu y datganiad o brif,
oherwydd yn hytrach na tu mewn prif ydym dim ond dweud, efallai y byddwch yn ei alw i gael int.
Pa mor fawr ydych chi eisiau i'r pyramid i fod?
Neu efallai y byddwch yn ei alw i gael float-- faint o newid
dylwn i allbwn i'r defnyddiwr?
>> Mae yna ffordd arall fodd bynnag, ac os ydym am i'n defnyddwyr
i allu darparu data i'n rhaglen
yn Rhedeg yn lle tra mae'r rhaglen yn rhedeg,
gwahaniaeth cynnil ond weithiau yn un defnyddiol iawn,
mae arnom angen ffurf newydd o ddatgan prif.
Ni allwn ddefnyddio brif ddi-rym int os ydym am casglu data eraill yn y gorchymyn-lein
pan fydd y defnyddiwr yn rhedeg y rhaglen, felly ddadleuon gorchymyn-lein.
>> Er mwyn casglu'r rhain gorchymyn-lein dadleuon o'r defnyddiwr,
newid eich datganiad o prif i edrych fel this-- int
prif paren, agored, argc int, coma, argv llinyn, bachau petryal,
ac yna agor brês cyrliog.
Felly beth mae hynny'n ei olygu yn barod?
Wel, rydym yn pasio yn ddau baramedr, neu ddadleuon, neu fewnbynnau i brif.
Un, yn gyfanrif o'r enw argc, a'r llall yw beth?
Mae'n amrywiaeth o linynnau, dde?
Rydym yn gweld bod nodiant braced sgwâr.
Mae'n amrywiaeth o dannau.
Nid yw'n 'an llinyn unigol, ei fod yn amrywiaeth o dannau.
A dau dadleuon hyn, argc a argv, eich galluogi i wybod pa ddata y defnyddiwr
wedi darparu yn y gorchymyn-lein a faint o bethau y maent
a ddarperir yn y gorchymyn-lein.
Pethau Pretty ddefnyddiol i weithio gyda.
>> Argc yn sefyll am gyfrif dadl, a dylech wybod, gyda llaw,
y gallech alw argc beth bynnag yr ydych am ei gael.
Gallwch ffonio argv beth bynnag yr ydych ei eisiau.
Mae'r rhain yn enwau yn unig gonfensiynol ein bod yn defnyddio ar gyfer them-- cyfrif dadl,
ac fel y byddwn yn gweld mewn eiliad, fector dadl, argv.
Ond nid oes rhaid i chi eu galw argc a argv os nad ydych am wneud hynny,
ond gonfensiynol, dyna beth rydym yn ei wneud.
>> Felly beth bynnag, argc, y cyfrif ddadl.
Mae'n newidyn cyfanrif-fath ac yn y blaen, fel y y gallech ddisgwyl, os ydym wedi dau beth
ein bod yn mynd i fod dod o hyd i beth mae'r rhain yn cael eu teipio
a faint o stwff y defnyddiwr deipio, argc yw
mynd i ddweud wrthym faint stwffio'r y defnyddiwr deipio.
Felly mae'n rhoi nifer ohonoch defnyddiwr dadleuon gorchymyn-lein
teipio pan fydd y rhaglen ei ddienyddio.
Felly os yw eich rhaglen yn rhedeg dot slaes yn farus,
a tu mewn i'ch barus rhaglennu eich prif swyddogaeth
Mae gan y datganiad int argc prif int, llinyn argv cromfachau sgwâr, yna
argc yn yr achos hwnnw yn un.
Nawr yn sylwi nad ydym yn ei wneud yn cyfrif faint o bethau
y defnyddiwr deipio ar ôl yr enw rhaglen.
Yr enw rhaglen ei hun yn cyfrif fel dadl gorchymyn-lein.
>> Felly dot slaes barus, yn yr achos hwnnw, argc yn un.
Os bydd y defnyddiwr yn teipio slaes barus 1024 CS50 yn y gorchymyn-lein, argc yn yr achos hwnnw
fyddai tri.
Ac rydym yn gwybod hyn oherwydd y ffordd bod y rhaniad rhwng y tannau
ei ganfod yw a mae lle, neu tab,
neu rywbeth fel 'na rhyngddynt.
Felly mae unrhyw faint o le gwyn, fel y'i gelwir, rhwng y gwerthoedd teipio gorchymyn-lein
dangos faint o mae.
Felly dot slaes gofod barus 1024 lle CS50, argc, yn yr achos hwnnw, yw tri.
>> Argv yw'r fector ddadl.
Fector, gyda llaw, yn unig Gair arall am amrywiaeth,
ac mae hyn yn amrywiaeth sy'n storio llinynnau.
Mae un llinyn bob elfen, sef y tannau bod y defnyddiwr mewn gwirionedd
deipio yn y gorchymyn-lein pan fydd y rhaglen ei ddienyddio.
Yn awr, fel sy'n digwydd gydag unrhyw array, os ydych yn
galw i gof gan ein trafodaeth ar araeau, elfen gyntaf argv
mae bob amser yn mynd i fod yn dod o hyd i yn argv braced sgwâr sero.
Dyna y mynegai cyntaf y rhesi argv.
Fel bod will-- ac mewn gwirionedd, bydd hynny bob amser yn enw'r rhaglen,
Bydd bob amser yn cael ei leoli yn argv braced sgwâr sero.
>> Yr elfen olaf o argv yn dod o hyd bob amser yn argv argc cromfachau sgwâr llai un.
A ydych yn gweld pam?
Cofiwch faint o elfennau yn bodoli mewn amrywiaeth hwn.
Wel, rydym yn gwybod ei fod yn that-- Rhif argc o elfennau.
Os bydd y defnyddiwr yn teipio dri pheth yn y-llinell orchymyn, argc yw tri.
Ond oherwydd yn c, pan fyddwn yn gweithio gyda arrays, pob elfen o'r array,
neu yn hytrach y mynegeion o yr amrywiaeth, yn dechrau ar sero.
Os oes gennym tair elfen yn ein array, mae gennym elfen yn argv sero,
elfen yn argv un, ac elfen yn argv dau.
Nid oes unrhyw elfen yn argv tri, ac amrywiaeth o faint tri.
Felly dyna pam yr olaf elfen o argv yn gallu bob amser
ar gael yn sgwâr argv argc cromfachau llai un.
>> Felly gadewch i ni dybio y executes defnyddiwr y rhaglen barus fel follows--
os ydynt yn teipio yn y dot gorchymyn-lein slaes farus o le 1024 CS50 gofod,
ac am ba bynnag reswm rydym wedi paratoi ein rhaglen barus yn barod
i adnabod a gweithio gyda'r rhain dadleuon gorchymyn-lein.
Nid ydym wnaethom o'r blaen wrth i ni weithio arno am y broblem barus,
ond gadewch i ni ddweud ein bod wedi ei addasu yn awr er mwyn i ni wneud y broses
y dadleuon gorchymyn-lein mewn rhyw ffordd.
Yn yr achos hwn, argv sero yn dot slaes farus.
Beth yw argv un?
Wel, mae'n 1024, dde?
Mae'n 1024, ond dyma distinction-- bwysig iawn
ydych chi'n cofio y math data o argv?
>> Mae'n storio llinynnau, dde?
Ond mae'n edrych fel 1024 yn werth gyfanrif.
Mae hwn yn bwysig iawn gwahaniaeth, ac mewn gwirionedd
mynd i ddod yn rhywbeth yr ydych Gallai ddod ar eu traws mewn problemau yn nes ymlaen.
Mae popeth yn argv yn storio fel llinyn.
Felly cynnwys argv un yw y llinyn un, sero, dau, pedwar,
sy'n cynnwys rhai pedwar cymeriad.
Mae fel os bydd y defnyddiwr deipio un, sero, dau, pedwar
fel llythyrau neu gymeriadau unigol.
Nid yw'r cyfanrif 1024, ac felly ni allwch yn uniongyrchol
gweithio gydag ef drwy ddweud int 1,000, neu yn hytrach int x hafal argv un minws 24.
>> Reddfol, efallai y byddwch yn meddwl am hynny fel, OK, wel mae'n 1,024 minws 24,
felly x yn hafal i 1,000.
Ond mewn gwirionedd, nid yw hynny'n wir, oherwydd bod argv un yn llinyn.
Mae'r llinyn 1024.
Erbyn hyn mae swyddogaeth y gellir ei a ddefnyddir i drosi llinynnau i gyfanrifau.
Ni fyddaf yn difetha hynny ar eich rhan nawr, ond rwy'n siŵr Zamyla
Bydd yn hapus i ddweud wrthych am y peth mewn y walkthrough ar gyfer problem yn y dyfodol.
Ond gallwch hefyd ddod o hyd esgus problemau like--
mi, swyddogaethau a fyddai gwneud hyn yn cyfeirio 50,
os byddwch yn mynd at y canllaw cyfeirio gallwch ddod o hyd i swyddogaeth sy'n
bydd yn gwneud trosi hyn i chi.
Ond unwaith eto, yn y walkthrough ar gyfer problem yn y dyfodol,
Bydd Zamyla yn hapus i yn dweud wrthych pa swyddogaeth
mae'n fydd yn trosi'r llinyn 1024 i'r cyfanrif 1024.
>> Mae pob hawl, felly symud ymlaen.
Rydym wedi cynnwys ein sero argv, rydym wedi cynnwys argv un.
Beth sydd yn argv dau?
CS50.
Dyna un yn ôl pob tebyg 'n bert hunan-esboniadol.
Beth sydd yn argv tri?
Wel eto, nid ydym yn gwybod yn iawn, dde?
Mae gennym amrywiaeth o faint tri, dyna sut llawer o elfennau y defnyddiwr
deipio yn y gorchymyn-lein, felly os ydym yn mynd i argv tri,
rydym yn awr yn rhy bell terfynau ein arae.
Bydd y compiler gadewch i ni wneud hyn, does dim problem greddfol ag ef,
ond o ran gwirionedd beth sy'n mynd i ddigwydd, nid ydym yn wir yn gwybod.
Mae'n dibynnu ar yr hyn sy'n lleoli yn y cof lle
argv Byddai disgwyl tair i fod.
Ac felly y gallem yn y pen draw dianc yn ddigerydd.
Yn fwy tebygol na pheidio, yn enwedig pan rydych yn gweithio gyda argv yn hytrach na
i unrhyw amrywiaeth arall dyna yn ein rhaglen,
yn ôl pob tebyg rydym yn mynd i ddioddef nam segmentu. Felly unwaith eto,
Byddwch yn siwr i beidio â overstep ffiniau o'ch araeau, yn enwedig argv,
o ystyried ei lefel uchel o pwysigrwydd yn eich rhaglenni.
>> Rwy'n Doug Lloyd.
Mae hyn yn CS50.