Größe eines Zeigers in C ermitteln

Waqar Aslam 12 Oktober 2023
  1. Zeiger in der Programmiersprache C
  2. Verwendung der Methode sizeof() zur Ermittlung der Größe eines Zeigers in C
  3. Verwenden Sie die malloc()-Methode, um die Größe eines Zeigers in C zu erhalten
Größe eines Zeigers in C ermitteln

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.
Waqar Aslam avatar Waqar Aslam avatar

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

Verwandter Artikel - C Pointer