znora Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Jeg driver opplæring av ferske studenter i c++. Et problem jeg stadig støter på er at studentene stadig gjør forutsettning om hva som ligger i arrays. Selv er jeg stort sett memset() for å slippe å gjøre forutsettninger om listene, men dette er c++ (ikke C), og jeg vil ikke lære bort min potensiellt dårlige kodestil. Man kan fylle arrays med: float values[2] = {0.0f, 0.0f}; men blir listene for store så blir det fort lovlig tungvint. Hva er riktigst? Videre ser jeg at studentene ofte slipper unna med det. Programmene deres kjører som en drøm. Hvorfor det? Lenke til kommentar
Giddion Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Jeg driver opplæring av ferske studenter i c++. Et problem jeg stadig støter på er at studentene stadig gjør forutsettning om hva som ligger i arrays. Selv er jeg stort sett memset() for å slippe å gjøre forutsettninger om listene, men dette er c++ (ikke C), og jeg vil ikke lære bort min potensiellt dårlige kodestil.Man kan fylle arrays med: float values[2] = {0.0f, 0.0f}; men blir listene for store så blir det fort lovlig tungvint. Hva er riktigst? Etter min mening er array noe som hører C til så det å bruk en C funksjon til å nullstille arrayene ser jeg ikke noe galt med. Du kan eventulet lage en for loop som gjør det, men etter min mening blir det ikke bedre av det. std::vector (som er c++`en sin "array") har parametret val i funksjonen resize som setter start verdien. Videre ser jeg at studentene ofte slipper unna med det. Programmene deres kjører som en drøm.Hvorfor det? Det at det går bra for studentene kan ha noe med åssen programmer de bruker, jeg mener å huske at vc++ setter minnet til 0 i debug. Kan det være noe av det samme som får det til å fungere? Lykke til og håper det hjalp Lenke til kommentar
znora Skrevet 17. mars 2009 Forfatter Del Skrevet 17. mars 2009 Takk for svar. Det opplarte mye. Lenke til kommentar
Dead_Rabbit Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Man kan fylle arrays med: float values[2] = {0.0f, 0.0f}; men blir listene for store så blir det fort lovlig tungvint. Hva er riktigst? Om jeg ikke husker helt feil, så vil dette også initialisere et array til null: float values[100] = {0.0}; .. og dette er etter min mening en greiere måte å gjøre det på. Hva som er mest "riktig" og ikke, blir vel en smaksak. Lenke til kommentar
LostOblivion Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Jepp, i C++ kan man skrive - int my_array[256] = {0}; , og alle elementene vil bli satt til den første verdien. Kan noen bekrefte dette? Er det bare i C++, eller i C og? Lenke til kommentar
jurg Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Jepp, i C++ kan man skrive - int my_array[256] = {0}; , og alle elementene vil bli satt til den første verdien. Kan noen bekrefte dette? Er det bare i C++, eller i C og? I C vil bare det første elementet bli satt til verdien spesifisert. Lenke til kommentar
LostOblivion Skrevet 17. mars 2009 Del Skrevet 17. mars 2009 Takk...lurte på dette. Lenke til kommentar
jurg Skrevet 18. mars 2009 Del Skrevet 18. mars 2009 Takk...lurte på dette. Svaret mitt var kanskje litt upresist; om en spesifiserer en verdi slik vil bare det første elementet bli satt til verdien, de påfølgende blir satt til 0. Samme praksis i C++. Lenke til kommentar
zotbar1234 Skrevet 18. mars 2009 Del Skrevet 18. mars 2009 Jeg driver opplæring av ferske studenter i c++. Et problem jeg stadig støter på er at studentene stadig gjør forutsettning om hva som ligger i arrays. Selv er jeg stort sett memset() for å slippe å gjøre forutsettninger om listene, men dette er c++ (ikke C), og jeg vil ikke lære bort min potensiellt dårlige kodestil. Hva er galt med memset() brukt på arrays av POD i C++? Det til side, std::fill/std::fill_n er litt mer generiske og bedre tilpasset C++. Videre ser jeg at studentene ofte slipper unna med det. Programmene deres kjører som en drøm.Hvorfor det? Vel, man trenger ikke å initialisere en array -- så lenge de ikke bruker en verdi før noe er lagret der (enten via initialisering eller tilordning til den aktuelle posisjonen i arrayen), så er alt i orden. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå