Ist 'static' immer notwendig?

Lucas82

Newbie
Registriert
Dez. 2015
Beiträge
4
Hi Leute

ich frage mich gerade ob es wirklich immer nötig ist tempa, tempb und tempc als 'static' zu deklarieren, weil ich manchmal auch ohne die Deklarierung richtige Werte bekomme. Ist das nur ein Bug oder muss ich wirklich immer alle als 'static' ausweisen?

Grüße

Lucas
 
Wenn Du dem geneigten Leser vielleicht mal erklären würdest worum es eigentlich geht?
 
weil ich manchmal auch ohne die Deklarierung richtige Werte bekomme
:)

Sollte alles erklären, nicht?
 
weißt du überhaupt, was static bedeutet bzw. was es macht?
Schon mal was von Klassen gehört (nicht die Schulklasse)?
Und wir wissen immer noch nicht, welche Programmiersprache. Ich schätze einfach mal Java?
Einfach mal dein Programm hier zeigen.
 
Zuletzt bearbeitet:
Marius schrieb:
weil ich manchmal auch ohne die Deklarierung richtige Werte bekomme
:)

Sollte alles erklären, nicht?
Vielleicht ist es ja so, dass er ohne die static-Deklaration nur manchmal richtige Werte bekommt und manchmal halt nicht, mit static-Deklaration hingegen immer richtige Werte bekommt. ;)

Vielleicht ist es ja kein Member einer Klasse, sondern eine Variable in einer Funktion, und wenn die static ist, hat sie bei jedem Neuaufruf der Funktion den Wert vom letzten Aufruf, während sie, wenn sie nicht static ist, jedes Mal einen neuen Wert bekomt.
 
Lucas82 schrieb:
ich frage mich gerade ob es wirklich immer nötig ist tempa, tempb und tempc als 'static' zu deklarieren, weil ich manchmal auch ohne die Deklarierung richtige Werte bekomme.

Du hast die Frage doch selbst beantwortet: Nein, das ist nicht immer nötig (und sollte auch möglichst vermieden werden).
 
static hat seine Berechtigung. Es gibt Fälle, da sollte die Methode/Klasse/Variable (was auch immer) static sein. Und es gibt Fälle wo sie nicht static sein soll.

Da du aber keine zusätzlichen Angaben gemacht hast, lässt sich nicht sagen was das für dein Problem bedeutet.

Also bitte poste:
- die Programmiersprache
- deinen Code (aus dem ersichtlich ist was tempa/b/c sein soll)
- und eine Erklärung was du eigentlich mit dem Code erreichen willst
 
Lustiger Thread!
TE lernt wohl gerade Java/C#. Und zwar völlig falsch :)

mfg,
Max
 
Oder C. Dann fliegt es ihm auch nicht um die Ohren, solange er die Finger von Multithreading lässt. :freak:
 
sorry, sorry, sorry, ja ich wollte was in c schreiben. Hab mich blöd ausgedrückt. tut mir leid. sculletto hat es schon ganz richtig erkannt.

Sculletto schrieb:
Vielleicht ist es ja so, dass er ohne die static-Deklaration nur manchmal richtige Werte bekommt und manchmal halt nicht, mit static-Deklaration hingegen immer richtige Werte bekommt. ;)

Vielleicht ist es ja kein Member einer Klasse, sondern eine Variable in einer Funktion, und wenn die static ist, hat sie bei jedem Neuaufruf der Funktion den Wert vom letzten Aufruf, während sie, wenn sie nicht static ist, jedes Mal einen neuen Wert bekomt.

Geht halt darum, dass in function_h muss die Variable uint8_t tempa[4] als static deklariert werden, damit das Programm die erwarteten Werte ausgibt. Falls nicht, gibt es für ptr[1], ptr[2], ptr[3] (nicht für ptr[0]) in der Main zufällige Werte (Adressen?) aus. Dies erkläre ich mir so, dass die Variable nur bis zum Ende der Methode lebt bzw. durch die Deklaration durch static länger lebt.
 
Wie sieht die Funktion denn aus? Zeig doch mal Code, hier kann sich gerade niemand vorstellen, was du überhaupt vor hast.

static lässt Variablen in C tatsächlich "länger" leben - bzw. in einem völlig anderen Scope. Siehe hier.

In 99.9% aller Fälle braucht man das aber nicht und wenn du deine Variablen richtig initialisierst, werden deine Funktionen auch ohne richtige Werte berechnen und keine zufälligen.
 
Zuletzt bearbeitet:
Zurück
Oben