366 Stimmen

Was ist der Unterschied zwischen char * const und const char *?

Was ist der Unterschied zwischen:

char * const 

und

const char *

2voto

Megharaj Punkte 1509

Hier ist eine ausführliche Erklärung mit Code

/*const char * p;
char * const p; 
const char * const p;*/ // these are the three conditions,

// const char *p;const char * const p; pointer value cannot be changed

// char * const p; pointer address cannot be changed

// const char * const p; both cannot be changed.

#include<stdio.h>

/*int main()
{
    const char * p; // value cannot be changed
    char z;
    //*p = 'c'; // this will not work
    p = &z;
    printf(" %c\n",*p);
    return 0;
}*/

/*int main()
{
    char * const p; // address cannot be changed
    char z;
    *p = 'c'; 
    //p = &z;   // this will not work
    printf(" %c\n",*p);
    return 0;
}*/

/*int main()
{
    const char * const p; // both address and value cannot be changed
    char z;
    *p = 'c'; // this will not work
    p = &z; // this will not work
    printf(" %c\n",*p);
    return 0;
}*/

2voto

Yogeesh H T Punkte 2411

char * const und const char *?

  1. Zeigen auf einen konstanten Wert

const char * p; // Wert kann nicht geändert werden

  1. Konstanter Zeiger auf einen Wert

char * const p; // Adresse kann nicht geändert werden

  1. Konstanter Zeiger auf einen konstanten Wert

const char * const p; // beide können nicht geändert werden.

1voto

Sany Punkte 83

Ich erinnere mich aus dem tschechischen Buch über C: lesen Sie die Erklärung, dass Sie mit der Variable beginnen und nach links gehen. Also für

char * const a;

können Sie als lesen: " a ist eine Variable vom Typ konstanter Zeiger auf char ",

char const * a;

können Sie als lesen: " a ist ein Zeiger auf eine konstante Variable vom Typ char. Ich hoffe, das hilft.

Bonus:

const char * const a;

Sie werden lesen als a ist ein konstanter Zeiger auf eine konstante Variable vom Typ char.

1voto

SteliosKts Punkte 65

Ich möchte darauf hinweisen, dass die Verwendung von int const * (oder const int * ) geht es nicht um einen Zeiger, der auf eine const int Variable ist, sondern dass diese Variable const für diesen speziellen Zeiger.

Zum Beispiel:

int var = 10;
int const * _p = &var;

Der obige Code lässt sich problemlos kompilieren. _p zeigt auf eine const variabel, obwohl var selbst ist nicht konstant.

1voto

Xinpei Zhai Punkte 11

Zwei Regeln

  1. If const is between char and *, it will affect the left one.
  2. If const is not between char and *, it will affect the nearest one.

z.B..

  1. char const *. This is a pointer points to a constant char.
  2. char * const. This is a constant pointer points to a char.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X