znora Skrevet 17. mars 2009 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?
Giddion Skrevet 17. mars 2009 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
Dead_Rabbit Skrevet 17. mars 2009 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.
LostOblivion Skrevet 17. mars 2009 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?
jurg Skrevet 17. mars 2009 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.
jurg Skrevet 18. mars 2009 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++.
zotbar1234 Skrevet 18. mars 2009 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.
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å