>> [REPRODUCCIÓ DE MÚSICA]
>> DOUG LLOYD: Molt bé, així que anem a parlar d'arguments de la línia d'ordres.
Així que, fins al moment en el curs bastant molt tots els teus programes
probablement han començat així- void main int.
Hem estat recol·lectant entrada de l'usuari si ho necessitem
en els nostres programes, com el Mario programa, per exemple,
per instruccions de programa.
No hem necessitat modificar la declaració del principal,
perquè en lloc dins nostre principal a dir, vostè pot trucar per obtenir int.
Què tan gran és el que vols de la piràmide sigui?
O vostè pot trucar per obtenir float-- quant canvi
he de sortida per a l'usuari?
>> Hi ha una altra manera però, i si volem que els nostres usuaris
per ser capaç de proporcionar dades al nostre programa
en temps d'execució en lloc del temps el programa s'està executant,
una distinció subtil però de vegades una molt útil,
necessitem una nova forma de declarar principal.
No podem fer servir void main int si volem recopilar altres dades a la línia d'ordres
quan l'usuari executa el programa, per tant, els arguments de línia de comandes.
>> Per recollir aquests de línia d'ordres arguments per part de l'usuari,
canviar la seva declaració de principal per semblar-se a esto-- int
principals, parin obertes, int argc, coma, argv corda, entre claudàtors,
i després obrir claudàtor.
Llavors, què vol dir això ja?
Bé, estem passant en dos paràmetres, o arguments, o entrades al principal.
Un, anomenat un nombre enter argc, i l'altre és el que?
És una matriu de cadenes, oi?
Veiem que la notació de claudàtors.
És una matriu de cadenes.
No és una cadena individual, és una matriu de cadenes.
I aquests dos arguments, argc i argv, li permeten conèixer les dades de l'usuari
ha proporcionat a la línia d'ordres i quantes coses
proporcionada a la línia d'ordres.
Coses molt útils per treballar.
>> Argc significa recompte argument, i vostè ha de saber, per cert,
que es podria anomenar argc el que tu vulguis.
Vostè pot trucar argv el que volies.
Aquests són noms simplement convencionals que utilitzem per ells-- recompte argument,
i com veurem en un segon, argument vector, argv.
Però vostè no ha de trucar argc i argv si no vol,
però convencionalment, això és el que fem.
>> Així que de totes maneres, argc, el recompte argument.
És una variable de tipus sencer i per això, com és d'esperar, si tenim dues coses
que trobarem la qual cosa aquests s'escriuen
i la quantitat de coses la usuari va escriure, argc és
ens dirà quant omplir l'usuari va escriure.
Pel que li dóna un número de arguments de línia de comandes d'usuari
escrit en què s'executa el programa.
Així que si el seu programa és executar dot retallar cobdiciós,
i en l'interior del seu cobdiciós programar la seva funció principal
té la declaració int int main argc, cadena argv claudàtors, a continuació,
argc en aquest cas és un.
Ara notem no ho fem comptar quantes coses
l'usuari va escriure després que el nom del programa.
El mateix nom del programa compta com un argument de línia d'ordres.
>> Així dot retallar cobdiciós, en aquest cas, argc és un.
Si l'usuari va escriure barra cobdiciosos 1024 CS50 en la línia d'ordres, argc en aquest cas
serien tres.
I ho sabem perquè el camí que la divisió entre les cordes
es detecta és si hi ha un espai o una fitxa,
o alguna cosa així entre ells.
Pel que qualsevol quantitat d'espai en blanc, així anomenat, entre els valors amb tipus de línia de comandaments
indica quants n'hi ha.
Així dot retallar espai cobdiciosos 1024 espai CS50, argc, en aquest cas, és de tres.
>> Argv és el vector argument.
Vector, per cert, és només una altra paraula per a una matriu,
i això és una matriu que emmagatzema cadenes.
Una cadena per element, que és les cadenes que l'usuari realment
escrit en la línia d'ordres quan s'executa el programa.
Ara, com és el cas amb qualsevol matriu, si
recordar de la nostra discussió de arrays, el primer element de argv
Sempre serà trobat en argv claudàtor zero.
Aquest és el primer índex de la matriu argv.
Així que voluntat-- i, de fet, que la voluntat sempre serà el nom del programa,
sempre serà situat en argv claudàtor zero.
>> L'últim element de argv sempre es troba en argv claudàtors argc menys un.
¿Veu vostè per què?
Recorda quants elements existir en aquesta matriu.
Bé, sabem que és que-- nombre argc d'elements.
Si l'usuari va escriure tres coses a la la línia d'ordres, argc és de tres.
Però com que en c, quan estem treballant amb matrius, cada element de la matriu,
o més aviat els índexs de la matriu, començar en zero.
Si tenim tres elements en la nostra matriu, tenim un element en argv zero,
un element en argv un, i un element de argv 2.
No hi ha cap element en argv tres, i una matriu de mida 3.
Així que per això l'última element de argv sempre pot
es troba a la plaça argv argc suports menys un.
>> Així que suposem que s'executa l'usuari el programa cobdiciosos com follows--
si escriu en el punt de línia d'ordres slash cobdiciosos espai de 1.024 espai CS50,
i per alguna raó que hem ja preparat el nostre programa cobdiciosos
de conèixer i treballar amb ells arguments de la línia d'ordres.
Nosaltres no ho vam fer anteriorment quan treballem en ell per al problema cobdiciós,
però diguem que ara hem modificat de manera que ho fem procés
els arguments de línia de comandes d'alguna manera.
En aquest cas, argv zero és slash dot cobdiciós.
Què hi ha argv un?
Bé, és 1024, oi?
És 1024, però aquí hi ha un realment important distinction--
Te'n recordes del tipus de dades de argv?
>> Emmagatzema cordes, oi?
Però sembla que 1024 és un valor sencer.
Aquest és un molt important distinció, i és en realitat
serà una cosa que vostè podria trobar-se en problemes posteriors.
Tot en argv és emmagatzemat com una cadena.
Així continguts de argv un són els cadena d'un, zero, dos, quatre,
composta pels quatre personatges.
És com si l'usuari va escriure un, zero, dos, quatre
com lletres o caràcters individuals.
No és el nombre enter 1 024, i pel que no pot directament
treballar amb ell dient int 1000, o en lloc int x és igual argv un menys 24.
>> Intuïtivament, es podria pensar d'aquesta com, OK, així que és 1024, menys de 24 anys,
pel que x és igual a 1,000.
Però, en realitat, això no és el cas, perquè argv és una cadena.
La cadena 1024.
Ara hi ha una funció que es pot utilitzat per convertir cadenes a enters.
No vaig a fer malbé per vostè ara, però estic segur Zamyla
estarà feliç de poder dir sobre això en el pas a pas per a un problema futur.
Però també es pot trobar problemes com-- excusa
mi, funcions que faria fer això en referència 50,
si vas a la guia de referència es pot trobar una funció que
farà aquesta conversió per a vostè.
Però, de nou, en el tutorial per a un problema futur,
Zamyla estarà encantat quina funció dir-li
és que va convertir el string 1024 al sencer 1024.
>> Molt bé, de manera que seguir endavant.
Hem cobert la nostra zero argv, hem cobert argv un.
Què hi ha a argv 2?
CS50.
Aquest és probablement explica per si mateix bonic.
Què hi ha a argv 3?
Doncs de nou, no ho sabem, no?
Tenim una gran varietat de mida 3, així és com molts dels elements que l'usuari
escrit en la línia d'ordres, així que si anem a argv 3,
ara estem sobrepassant els límits de la nostra matriu.
El compilador fem això, no hi ha problema intuïtiva amb ell,
però en termes de realitat del que està passant a succeir, no se sap molt bé.
Depèn del que és ubicada a la memòria on
argv tres serien s'espera que sigui.
I així podríem acabar allunyar impunes.
El més probable és que no, sobretot quan està treballant amb argv en oposició
a qualsevol altra matriu això és en el nostre programa,
probablement patirem un error de segmentació. Així que de nou,
Vos de no sobrepassar els límits de les seves matrius, en particular argv,
donat el seu alt grau de importància en els seus programes.
>> Sóc Doug Lloyd.
Això és CS50.