Das Schlüsselwort register in C
-
eine Übersicht über das Schlüsselwort
register
in der Programmiersprache C -
Verwendung des Schlüsselworts
Register
in C - Abrufen der Adresse einer Registervariablen in C
-
Verwenden Sie das Schlüsselwort
register
mit einer Zeigervariablen in C -
Verwendung von Speicherklassen mit Schlüsselwort
register
in C -
Geltungsbereich der Variable
register
in der Programmiersprache C
Dieser Artikel behandelt das Schlüsselwort register
in der Programmiersprache C.
eine Übersicht über das Schlüsselwort register
in der Programmiersprache C
Alle Variablen in einem C-Programm werden im Speicher gespeichert, jede mit ihrer Speicheradresse. Wenn Sie jedoch das Schlüsselwort register
in Verbindung mit einer Variablen verwenden, speichert der Compiler die Variable eher in einem CPU-Register als im Arbeitsspeicher.
Falls Sie es nicht wussten, ein Prozessor hat eine endliche Anzahl von Allzweckregistern, und es liegt in der Verantwortung der zentralen Verarbeitungseinheit (CPU), alle Variablen in ihre jeweiligen Register zu laden, bevor arithmetische oder logische Operationen an Daten durchgeführt werden.
Register sind viel schneller als Speicher, und der Zugriffszeitgeber für die CPU ist entsprechend kürzer.
Als Ergebnis koppeln wir ein register
-Schlüsselwort mit einer Variable mit der höchsten Häufigkeit des Auftretens im gesamten Programm. Das Schlüsselwort register
teilt dem Compiler mit, dass die betreffende Variable in einem Prozessorregister gespeichert werden soll, damit sie in kürzester Zeit abgerufen werden kann.
Es bleibt jedoch dem Compiler überlassen, ob er diese Variable im Speicher oder in einem Prozessorregister speichert oder nicht.
Betrachten wir mehrere Szenarien, in denen das Schlüsselwort register
in den Programmen verwendet werden kann.
Verwendung des Schlüsselworts Register
in C
Unten ist ein einfaches Beispiel für das Schlüsselwort register
, das in der Programmiersprache C verwendet wird.
#include <stdio.h>
int main() {
register char a = 'S';
register double b = 10;
register int c = 8;
printf("The value of register variable a: %c\n", a);
printf("The value of register variable b: %f\n", b);
printf("The value of register variable c: %d", c);
return 0;
}
Ausgang:
The value of register variable a: S
The value of register variable b: 10.000000
The value of register variable c: 8
Abrufen der Adresse einer Registervariablen in C
Angenommen, Sie platzieren ein register
-Schlüsselwort mit einer Variablen. In diesem Fall können Sie nicht mit dem unären Adressoperator &
auf die Adresse der Variablen zugreifen, selbst wenn der Compiler entscheidet, die Variable im Speicher statt in einem CPU-Register zu speichern.
Dies ist eine entscheidende Tatsache, die Sie im Auge behalten sollten.
Wenn Sie den Adressoperator &
mit einer Registervariable kombinieren, gibt Ihnen der verwendete Compiler entweder eine Warnung oder einen Fehler aus. Die Nachricht, die Sie erhalten, hängt davon ab, um welche es sich handelt.
Denn wenn Sie das Schlüsselwort register
mit einer Variablen verwenden, kann der Wert der Variablen in einem Prozessorregister statt im Speicher platziert werden, und Prozessorregister haben keine Adresse. Nehmen wir ein Beispiel.
#include <stdio.h>
int main() {
register int registerVariable = 22;
int* ptr = ®isterVariable;
printf("%d", *ptr);
return 0;
}
Ausgang:
main.c: In function ‘main’:
main.c:5:5: error: address of register variable ‘registerVariable’ requested
5 | int* ptr = ®isterVariable;
| ^~~
Verwenden Sie das Schlüsselwort register
mit einer Zeigervariablen in C
Das Schlüsselwort register
kann mit dem Zeiger verwendet werden. Es kann die Adresse eines Speicherplatzes haben.
Hier ist ein Beispiel für das Schlüsselwort register
, das mit der Zeigervariablen in der Programmiersprache C verwendet wird.
#include <stdio.h>
int main() {
int value = 15;
register int* pointerVariable = &value;
printf("The value of the pointer is: %d", *pointerVariable);
return 0;
}
Ausgang:
The value of the pointer is: 15
Verwendung von Speicherklassen mit Schlüsselwort register
in C
Die Programmiersprache C erlaubt nicht die Verwendung verschiedener Speicherklassenbezeichner für eine einzelne Variable. Das Register ist eine Speicherklasse.
Daher können Sie das Register nicht in Kombination mit static
, auto
und extern
verwenden.
#include <stdio.h>
int main() {
auto register int value = 15;
printf("The value of the pointer is: %d", value);
return 0;
}
Ausgang:
main.c: In function ‘main’:
main.c:5:5: error: multiple storage classes in declaration specifiers
5 | auto register int value = 15;
| ^~~~
Geltungsbereich der Variable register
in der Programmiersprache C
Das Schlüsselwort register
kann nur in Verbindung mit einer lokalen Variablen verwendet werden; Es ist nicht möglich, ein Register mit einer Variablen mit globalem Geltungsbereich zu verwenden.
#include <stdio.h>
register int value = 22;
int main() {
printf("%d", value);
return 0;
}
Ausgang:
main.c:3:14: error: register name not specified for ‘value’
3 | register int value = 22;
|
I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.
LinkedIn