Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Variablen in C

Diskussion: Variablen in C im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo zusammen, Ich schaue mir grad mal wieder paar basics in C an und da sind paar Lücken wie ...

Antwort
Alt 26.10.05, 23:29   #1 (permalink)
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard Variablen in C

Anzeige

Hallo zusammen,

Ich schaue mir grad mal wieder paar basics in C an und da sind paar Lücken wie ich gemerkt hab, daher in paar Fragen an euch :

1. Der Speicherort einer Variablen wird vom Compiler bestimmt, ich würde mal gerne wissen nach welchem Prinzip dies geschieht !

2. Gibt es eine offizielle Quelle in der steht, welche Größe Variablen haben müssen und welche es gibt ( jetzt neben dem Stanard ) ich habe jetzt gelesen das es sowas wie long long gibt usw. ?

Danke im voraus

Nachtrag :

Mich würde auch mal interessieren, wie das intern mit dem const geregelt wird !
Mich würden auch mal genauere Informationen zu den Speicherklassen register und auto interessieren, sowie ein Beispiel zu volatile.

Dawen ist offline   Mit Zitat antworten
Alt 27.10.05, 21:44   #2 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
2. ANSI-C Standard.

Dabei gilt:
char - min. 1 Byte ( min. 8 Bit)
short - min. 2 Byte (min. 16 Bit)
int - Je nach Computer, auf 32 Bit-CPU => 32 Bit, auf 64 Bit-CPU => 64 Bit, also meisten 16, 32 oder 64 Bit
long - min. 4 Byte (min. 32 Bit)
long long - 8 Byte (min. 64 Bit), neu seit ANSI C99, mache Compiler unterstützen Typen nicht
float - 4 Byte
double - 8 Byte
long double - 10 Byte

Desweitern soll gelten:

long long > long > int > short > char

3. Möchtest du den Unterschied zwischen intern und const wissen?
Also auto ist der default-Wert. Sprich wenn ein Block (z.B. eine Funktion) fertig ist, wird der Wert aus den Speicher gelöscht.
Bei static bleibt die Variable weiter im Speicher erhalten, um bei einem erneuten Aufruf wieder zur Verfügung zu stehen.
Register-Variablen sind Variablen, die im CPU-Register gehalten werden sollen.
Dies kann der Compiler allerdings ignorieren (wird auch meistens), desweiteren passen viele Variablen gar nicht in 1 Register.

Mit volatile wird eine Funktion immer wieder aus dem Hauptspeicher geladen. Dies wird vorallem bei der Programmierung von peripheren Geräten benutzt.
Elderan ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 28.10.05, 23:56   #3 (permalink)
 
Registriert seit: 19.03.05
alpha Leistung: Facit NTK
Likes: 0
Standard RE: Variablen in C

Zitat:
Original von Dawen
Hallo zusammen,

Ich schaue mir grad mal wieder paar basics in C an und da sind paar Lücken wie ich gemerkt hab, daher in paar Fragen an euch :

1. Der Speicherort einer Variablen wird vom Compiler bestimmt, ich würde mal gerne wissen nach welchem Prinzip dies geschieht !

2. Gibt es eine offizielle Quelle in der steht, welche Größe Variablen haben müssen und welche es gibt ( jetzt neben dem Stanard ) ich habe jetzt gelesen das es sowas wie long long gibt usw. ?

Danke im voraus

Nachtrag :

Mich würde auch mal interessieren, wie das intern mit dem const geregelt wird !
Mich würden auch mal genauere Informationen zu den Speicherklassen register und auto interessieren, sowie ein Beispiel zu volatile.
zur ersten frage: es kommt darauf um was für eine art von variable es sich dabei handelt. wenn ein programm in den speicher geladen wird, stehen globale variablen im sogenannten data-segment (die einzelnen anweisungen im text-segment). data-segment unterscheidet sich darin, dass er beschreibbar ist im gegensatz zum text-segment, welcher read-only ist. im daten-segment gibt es noch einen weiteren bereich, der bss heißt. in ihm stehen globale variablen, die nicht initialisiert wurden.
lokale variablen stehen jeweils im kontext derjenigen funktion in der sie benutzt werden auf dem stack und sind daher auch nur innerhalb der entsprechenden funktion sichtbar, also ansprechbar, weil der stack beim aufruf einer funktion "aufgebaut" und nach beenden dieser wieder "abgebaut" wird.

wenn datenstrukturen während der laufzeit dynamisch erzeugt werden z.b. mit hilfe der malloc-funktion, kommen die variablen in den so genannten heap oder besser gesagt, der speicher für diese wird aus dem heap zugewiesen.

ich hoffe dass es deine fragen ein wenig beantwortet. im große ganzen geht es nur darum, dass diese unterteilung in die bereiche keine entshceidung des compilers ist, sondern sozusagen "allgemeingültig", weil z.b. der stack schon vom prozessor unterstützt wird und gewisse operationen dafür bietet usw. d.h. das vorgehen ist hier letztlich durch die architektur festgelegt wie es sein sollte. ich hoffe ich bringe jetzt nichts durcheinander.

grüße,
alpha.
alpha ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Variablen in C
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
variablen in sql datenbank Grottenolm Code Kitchen 5 15.05.08 15:33
xcopy variablen Phlegma Applikationen 0 09.12.06 19:07
Verkettung von Variablen web-freak (Web-) Design und webbasierte Sprachen 7 02.01.06 17:15
GET Variablen in URL verstecken. 4future (Web-) Design und webbasierte Sprachen 8 16.01.05 14:47
float-Variablen in C niedriger noob Code Kitchen 2 03.02.02 16:46


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61