Proceduren tar en pekare till ett element i en dubbellänkad lista och skapar ett nytt element med given storlek samt länkar in detta. Sedan skall adressen till det nya elementet följa med tillbaka så att pekaren i anropet blir ändrad.
Just denna går ju att lösa med en funktion som returnerar den nya pekaren eller det går att "ta ett kliv" i listan, men det finns andra som har med sig två pekare in och där båda eller en (okänt i förväg vilken) som kommer att ändras och ändringen skall följa med tillbaka i de variabler som använts vid anropet.
Marta skrev:Proceduren tar en pekare till ett element i en dubbellänkad lista och skapar ett nytt element med given storlek samt länkar in detta. Sedan skall adressen till det nya elementet följa med tillbaka så att pekaren i anropet blir ändrad.
Istället för att skicka pekaren som parameter så skickar du en pekare till pekaren. Det behöver inte deklareras någon ny typ för detta. D.v.s. sätta på en extra stjärna i funktionsdeklarationen och anropen och ett extra ochtecken på varje ställe pekaren används inne i funktionen.
Tyvärr är det nog så att Pascal är överlägset C, ja. Ada är ännu bättre.
Har du tungt vägande skäl att använda C istället för C++?
C++ tar visserligen inte bort några av dom idiotier som C har men tillför en del bra saker. Som till exempel riktiga referensparametrar med &-syntaxen. Funkar som var i pascal. Ungefär.
Dessutom finns ju stl, standard template library som ger en hel del standardiserade biblioteksrutiner så man slipper hålla på med den (n+1)e implementationen av länkad lista.
Fast jag är iofs så lyckligt lottad att jag slipper att yrkesmässigt utveckla för dom ynkligaste processorerna men jag skulle hellre välja nån Cortex M0 för några kronor mer än en PIC och slippa C om jag alls gjorde embeeded for a living.
"En miljard flugor kan inte ha fel, ät skit". Eller "eftersom C är det absolut största språket inom embedded kan det ju inte vara helt fel". Och det gäller oavsett arkitektur.
Jag misstänker att alla de populäraste operativsystemen är skrivna i C. Windows, Android, iOS och vad det andra från Apple heter och slutligen Linux.
Cortex M0 brukar vara billigare än allt annat vid motsvarande prestanda. Själv slutade jag använda PIC för 15~20 år sedan eftersom jag redan då insåg att livet är för kort.
kodar-holger: Vilken Ada-kompilator rekommenderar du?
Jag är osäker på vad du menar lillahuset. Om du håller med eller ej. Stora delar av VMS var skrivet i BLISS om jag minns rätt. Inget som hindrade att många applikationsprogram gjordes i Basic, Fortran, ... Att OS är skrivet i C är inget som helst argument för att koda i C. Programming by Google kan vara ett argument. D.v.s. hur gör jag detta, googla fram nån som redan löst problemet och kopiera koden.
Använder GNAT. Tyvärr är alternativen inte så många. Och som sagt, inte embedded. Wintelplattform. Många kärnor och mycket minne. Men gnat finns till Arm om jag minns rätt. Behöver du fråga om priset har du inte råd. Finns opensource-initiativ. https://adaformicrocontrollers.com/.
Japp, C är industristandard och industrin har alltid rätt. Det är därför vi fortfarande arbetar 6 dagar i veckan och minst 12 timmar varje dag, och cancerogena skäroljor används.
Nja, jag bara är av den uppfattningen att det mesta som har skrivits av systemprogramvara efter K&R är i C. För applikationer tycker jag Python verkar vara ett bra val. Det är bara det att jag inte, tyvärr, har förmått mig att lära mig Python.
Och nej, vi (de flesta men kanske inte du och jag), jobbar inte sex dagar i veckan tolv timmar om dagen.
Däremot tycker jag 40-40-40-regeln verkar tillämplig. Vi jobbar 40 timmar i veckan i 40 år för att få ut 40% av vad vi behöver för att överleva efter pensionen för att någon annan ska bli rik.
Jag kommer nog aldrig överge C. Grinig gammal gubbe.
Ja just var-parametrarna är faktiskt en tillgång i Pascal, men ändå nog så svår att förklara. Jag gillade dock Pascal som
språk att lära ut programmering med. Det var väldigt rakt på sak och gjorde man fel fick man veta det. Tack vare just
var-parametrarna kom man väldigt långt utan pekare. Körde nybörjarkurser i programmering i Pascal på Högskolan i Gävle mellan
ca 1999 och 2005 eller så (och andra kurser förstås).
Som någon sa tidigare finns motsvarigheten till var-parameter i form av & i C++. Eftersom C ingår som ett subset av C++ kan
man koda C och använda sig av & på ett bekvämt sätt.
Ett ställe där det är skillnad på Pascal och C är när man ska hantera strängar. Pascal är mer åt array-hållet (strängens längd finns lagrad i strängen själv) och C som anser strängar som enbart en pekare till första tecknet, sen hoppas vi att det finns ett terminerade '\0' längre fram.
Som säkert många har skrivit och du kommit fram till kan man om man vill vara purist och köra C skicka med en pekare till variabeln man vill ändra och sedan dereferera den i funktionen. Det blir ganska likt var-parameter förutom att man måste vara medveten om att man har en pekare.