Tach zusammen, hab mal eine kurze Frage: Kann man den Adresspointer eine Static Variablen aus einer Funktion übergeben? Mein C Buch (K&R) lässt sich lediglich über den Gültigkeitsbereich der Variablen aus. /* The static declaration can also be applied to internal variables. Internal static variables are local to a particular function just as automatic variables are, but unlike automatics, they remain in existence rather than coming and going each time the function is activated. This means that internal static variables provide private, permanent storage within a single function. */ Da sie ja für die Wiederverwendung in der Funktion "aufgehoben" wird, sollte man annehmen, dass sich die Adresse nicht ändert, oder wie verhält sich das? Konkret: Ich möchte weitere globale Variablen vermeiden. Die benötigte Variable muss aber in der Funktion static sein. Darauf zugegriffen werden soll aber auch aus Main. Thx!
Alter Falter schrieb: > Tach zusammen, > > hab mal eine kurze Frage: > > Kann man den Adresspointer eine Static Variablen aus einer Funktion > übergeben? Ja, kann man. Allerdings wirft das sofort die Frage auf, wozu das gut sein soll. Man macht die Variable ja static, damit sie von aussen nicht zugreifbar ist. Mit dem Rausrücken eines Pointers untergräbt man dieses Ansinnen. Ist ein bischen so wie das wegschliessen von Dokumenten in einer Kammer mit besonderem Sicherheitssschloss aber gleichzeitig stemmt man ein schönes großes Loch in die Wand der Kammer. > Ich möchte weitere globale Variablen vermeiden. > Die benötigte Variable muss aber in der Funktion static sein. > Darauf zugegriffen werden soll aber auch aus Main. Brauchst du dazu die Adresse oder reicht dazu nicht auch der Wert alleine auch schon aus.
Hallo Karl-Heinz, danke für Deine "erleuchtende" Antwort. So gesehen hast Du absolut Recht. Ich hätte allerdings formuliert: Mann macht die Variable static, damit sie innen wiederholt zugreifbar bleibt:-) Wie es scheint hatte ich den falschen Blickwinkel. Den Wert zurückgeben ist nicht so schön, da es sich um ein Char Array[10] handelt. ok - also global.
Vorsicht: static bei globaler Variable != static bei lokaler Variable Ich hab so das Gefühl der Karl-Heinz und du reden aneinander vorbei.
hmmm - ich hatte das Gefühl er hatte mich verstanden. Ich spreche von static lokal und wechsle jetzt zu global ohne static.
Alter Falter schrieb: > Den Wert zurückgeben ist nicht so schön, da es sich um ein Char > Array[10] handelt. Ja, das ist natürlich ein spezielles Problem mit Arrays in C. > ok - also global. Kann man machen. Wenn du sie dort weghaben willst geht ja unter Umständen auch noch File-lokal. Dann hast du sie zwar nicht global, aber immerhin so, dass eine 2.te Funktion innerhalb des Moduls darauf zugreifen kann.
Karl Heinz Buchegger schrieb: > Alter Falter schrieb: >> Tach zusammen, >> >> hab mal eine kurze Frage: >> >> Kann man den Adresspointer eine Static Variablen aus einer Funktion >> übergeben? > > Ja, kann man. > > Allerdings wirft das sofort die Frage auf, wozu das gut sein soll. Man > macht die Variable ja static, damit sie von aussen nicht zugreifbar ist. > Mit dem Rausrücken eines Pointers untergräbt man dieses Ansinnen. > > Ist ein bischen so wie das wegschliessen von Dokumenten in einer Kammer > mit besonderem Sicherheitssschloss aber gleichzeitig stemmt man ein > schönes großes Loch in die Wand der Kammer. Kapselung? Bitte reduzieren Sie die Anzahl der Zitatzeilen. Bitte reduzieren Sie die Anzahl der Zitatzeilen. Bitte reduzieren Sie die Anzahl der Zitatzeilen. Bitte reduzieren Sie die Anzahl der Zitatzeilen.
Der USBasp Code vom avrdude definiert auch all seine Funktionen static und übergibt die dann per Zeiger raus an die avrdude Programmlogik...
Johann L. schrieb: > Kapselung? Was willst du mit dieser doch sehr langen und ausführlich formulierten Frage sagen? Daß du das für Kapselung hältst oder daß du Kapselung als Alternative dafür siehst? > Bitte reduzieren Sie die Anzahl der Zitatzeilen. > Bitte reduzieren Sie die Anzahl der Zitatzeilen. > Bitte reduzieren Sie die Anzahl der Zitatzeilen. > Bitte reduzieren Sie die Anzahl der Zitatzeilen. Hast du mal daran gedacht, diesen Hinweis zu beherzigen, statt so eine alberne Aktion abzuziehen?
Rolf Magnus schrieb: > Johann L. schrieb: >> Kapselung? > > Was willst du mit dieser doch sehr langen und ausführlich formulierten > Frage sagen? Daß du das für Kapselung hältst oder daß du Kapselung als > Alternative dafür siehst? > >> Bitte reduzieren Sie die Anzahl der Zitatzeilen. >> Bitte reduzieren Sie die Anzahl der Zitatzeilen. >> Bitte reduzieren Sie die Anzahl der Zitatzeilen. >> Bitte reduzieren Sie die Anzahl der Zitatzeilen. > > Hast du mal daran gedacht, diesen Hinweis zu beherzigen, statt so eine > alberne Aktion abzuziehen? Die alberne Aktion wird von der Forensoftware geforder. Sie bestimmt offenbar das Verhältnis von Zitatzeilen zu Nicht-Zitatzeilen und verweigert Antworten, wenn sie in ihrer Unfehlbarkeit zu dem Schluss kommt, "Das darf nicht sein". Als Autor finde ich es sinnvoll, Zitate einzufügen, damit Leser wissen, worauf ich in meiner Antwort Bezug nehme. Und der Text, auf den ich mich beziehe, kann eben länger sein als eine kurze, klare Antwort oder ein kutzes Statement. Wenn jemand etwa fragt "Ist das so?" und ich antworte "Ja, weil Begründung", dann kann letzteres deutlich kürzer sein als als die Frage, und dennoch ist es ein sinnvoller und hilfreicher Beitrag. Wenn es dich stört, daß die Forensoftware Mitglieder gängelt, dann beschwere dich bitte bei der Forensoftware und nicht bei mir. Wenn diese Software denkt, allein anhand der Anzahl von Zeilen oder Buchstaben die Sinnhaftigkeit eines Beitrags bewerten zu können — bitte. Dann füge ich eben die Zeilen dazu, die den Beitrag für die Software "sinnvoll" machen, aber auch dem Leser klar sagen, daß diese Zeilen nicht zum Beitrag gehören sondern von irgendwelchen starren Regeln gefordert werden. Ich versuche lediglich Beiträge zu verfassen, die in sich schlüssig sind. Mehr nicht.
Johann L. schrieb: > Als Autor finde ich es sinnvoll, Zitate einzufügen, damit Leser wissen, > worauf ich in meiner Antwort Bezug nehme. Das finde ich auch. Allerdings muß man dazu nicht gleich die ganze Diskussion mitzitieren. > Und der Text, auf den ich mich beziehe, kann eben länger sein als eine kurze, > klare Antwort oder ein kutzes Statement. Das mag in seltenen Fällen so sein, aber in diesem Fall nicht. Bei deinem obigen Posting hätte auch ein wesentlich kürzeres Zitat ausgereicht. Dafür hättest du lieber einen ganzen Satz formulieren sollen, statt einfach nur ein einzelnes Wort hinzuwerfen, dessen Sinn sich auch aus den 18 zitierten Zeilen davor nicht ergibt. > Wenn es dich stört, daß die Forensoftware Mitglieder gängelt, dann > beschwere dich bitte bei der Forensoftware und nicht bei mir. Ich hab nirgends geschrieben, daß mich das Forum stört oder gängelt. Das tut es auch nicht. Ich hab hier bestimmt schon mehrere Hundert Postings verfaßt und noch nie ein Problem damit gehabt. Stören tut mich nur die Art deines Postings. Genau solche Postings sind letztlich auch der Grund, warum im Forum überhaupt solche Regeln eingeführt wurden. > Ich versuche lediglich Beiträge zu verfassen, die in sich schlüssig > sind. Mehr nicht. Darin hast du auf ganzer Linie versagt.
Gut. Ich werde zukündtig besser überdenken, ob ein Beitrag sinnvoll ist.
Ich finde es schade, dass in allen Foren (nicht nur hier) alles immer gleich ausarten muss und persönlich wird.Ist ja auch so einfach im Schutze der Anonymität. Einerseits beschweren sich die Leute hier so oft, dass man doch endlich dass C-Buch lesen soll - vermutlich damit sie nicht soviel Mühe beim Antworten haben und im Gegenzug werden unendlich viele Zeilen für Banalitäten reingeprügelt. Sehr schade - wo bleibt die Netiquette? Armes Internet ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.