Größe eines Zeigers in C ermitteln
- Zeiger in der Programmiersprache C
-
Verwendung der Methode
sizeof()
zur Ermittlung der Größe eines Zeigers in C -
Verwenden Sie die
malloc()
-Methode, um die Größe eines Zeigers in C zu erhalten
Dieser Artikel veranschaulicht, wie die Größe eines Zeigers mithilfe der Programmiersprache C bestimmt wird.
Zeiger in der Programmiersprache C
Eine Variable, die als Zeiger bekannt ist, ist eine Variable, deren Wert die Adresse einer anderen Variablen ist; mit anderen Worten, der Zeiger selbst enthält die direkte Adresse des Speicherplatzes. Bevor ein Zeiger verwendet werden kann, um die Position einer Variablen zu halten, muss er zuerst deklariert werden.
Syntax:
type *var - name;
Dabei bezieht sich der type
auf den Basistyp
des Zeigers, es sollte ein gültiger Datentyp sein, und der var-name
ist der name
der Variablen, die den Zeiger speichert. Es ist wichtig zu beachten, dass das Sternchen (*
), das zur Bezeichnung eines Zeigers verwendet wird, dasselbe Sternchen ist, das für die Multiplikation verwendet wird.
Andererseits wird das Sternchen (*
) in diesem Satz verwendet, um anzuzeigen, dass eine bestimmte Variable ein Zeiger ist. Im Folgenden sind einige der verschiedenen Datentypdeklarationen aufgeführt, die für Zeiger zulässig sind.
int *integerPointer;
char *characterPointer;
float *floatPointer;
double *doublePointer;
Verwendung der Methode sizeof()
zur Ermittlung der Größe eines Zeigers in C
Die Methode sizeof()
akzeptiert nur einen Parameter. Es ist ein Operator, dessen Wert vom Compiler bestimmt wird; Aus diesem Grund wird er als unärer Kompilierungsoperator bezeichnet.
Die Funktion sizeof()
gibt den ganzzahligen Datentyp ohne Vorzeichen zurück.
Lassen Sie uns ein Beispiel haben, in dem wir die Funktion sizeof()
verwenden, um die Größe verschiedener Variablen zu bestimmen, deren Datentypen unterschiedlich sind. Legen Sie die Anfangswerte für vier Variablen mit den Namen a,
, b,
, c,
und d
fest, indem Sie die Datentypen int,
, char,
, float,
und double,
verwenden.
int a = 10;
char b = 'x';
float c = 10.01;
double d = 10.01;
Nachdem Sie die vier Pointer-Variablen mit den Namen *integerPointer,
, *characterPointer,
, *floatPointer,
und *doublePointer,
initialisiert haben, weisen Sie die Werte a
, b
, c
und d
zu sie bzw.
int *integerPointer = &a;
char *characterPointer = &b;
float *floatPointer = &c;
double *doublePointer = &d;
Nun brauchen wir einige printf
-Befehle, um die Grösse der Variablen und der Pointer-Variablen auszugeben.
Diese Anweisungen sind erforderlich, um den Operator sizeof
zu verwenden, und die Parameter, die ihm übergeben werden sollten, sind a
, b
, c
, d
und dementsprechend *integerPointer
, *characterPointer
, *floatPointer
und *doublePointer
.
printf("size of (a) = %lu bytes", sizeof(a));
printf("\nsize of (a) pointer = %lu bytes", sizeof(*integerPointer));
printf("\nsize of (b) = %lu bytes", sizeof(b));
printf("\nsize of (b) pointer = %lu bytes", sizeof(*characterPointer));
printf("\nsize of (c) = %lu bytes", sizeof(c));
printf("\nsize of (c) pointer = %lu bytes", sizeof(*floatPointer));
printf("\nsize of (d) = %lu bytes", sizeof(d));
printf("\nsize of (d) pointer = %lu bytes", sizeof(*doublePointer));
Die Notation %lu
wird verwendet, weil das Ergebnis der Methode sizeof
eine ganze Zahl ohne Vorzeichen ist.
Vollständiger Quellcode:
#include <stdio.h>
int main() {
int a = 10;
char b = 'x';
float c = 10.01;
double d = 10.01;
int *integerPointer = &a;
char *characterPointer = &b;
float *floatPointer = &c;
double *doublePointer = &d;
printf("size of (a) = %lu bytes", sizeof(a));
printf("\nsize of (a) pointer = %lu bytes", sizeof(*integerPointer));
printf("\nsize of (b) = %lu bytes", sizeof(b));
printf("\nsize of (b) pointer = %lu bytes", sizeof(*characterPointer));
printf("\nsize of (c) = %lu bytes", sizeof(c));
printf("\nsize of (c) pointer = %lu bytes", sizeof(*floatPointer));
printf("\nsize of (d) = %lu bytes", sizeof(d));
printf("\nsize of (d) pointer = %lu bytes", sizeof(*doublePointer));
return 0;
}
Ausgang:
size of (a): = 4 bytes
size of (a) pointer: = 4 bytes
size of (b): = 1 bytes
size of (b) pointer: = 1 bytes
size of (c): = 4 bytes
size of (c) pointer: = 4 bytes
size of (d): = 8 bytes
size of (d) pointer: = 8 bytes
Verwenden Sie die malloc()
-Methode, um die Größe eines Zeigers in C zu erhalten
Betrachten wir ein weiteres Beispiel für eine Zeigervariable, die die malloc
-Technik verwendet, um die Größe zuzuweisen.
Initiieren Sie innerhalb der Funktion main()
eine Zeigervariable mit dem Datentyp char
und nennen Sie sie *cPointer
. Weisen Sie eine Funktion mit dem Namen malloc()
zu und übergeben Sie ihr als Argument die Methode sizeof()
.
Die Methode sizeof
akzeptiert char *
als Argument.
int main() { char *cPointer = malloc(sizeof(char *)); }
An dieser Stelle müssen wir den Wert von *cPointer
in Bytes drucken.
printf("Size of the pointer is %lu bytes.\n", sizeof(*cPointer));
Vollständiger Quellcode:
#include <stdio.h>
#include <stdlib.h>
int main() {
char *cPointer = malloc(sizeof(char *));
printf("Size of the pointer is %lu bytes.\n", sizeof(*cPointer));
return 0;
}
Ausgang:
The size of the pointer is 1 byte.
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