Diferencia entre const char *p, char * const p y const char * const p

Requisito previo: Punteros 
Hay mucha confusión cuando char, const, *, p se usan en diferentes permutaciones y los significados cambian según cuál se coloca dónde. El siguiente artículo se centra en la diferenciación y el uso de todos estos. 
El calificador const se puede aplicar a la declaración de cualquier variable para especificar que su valor no cambiará. La palabra clave const se aplica a lo que esté inmediatamente a su izquierda. Si no hay nada a su izquierda, se aplica a lo que esté inmediatamente a su derecha. 

1. const char *ptr: este es un puntero a un carácter constante. No puede cambiar el valor señalado por ptr, pero puede cambiar el puntero en sí . “const char *” es un puntero (no const) a un const char.

C

// C program to illustrate
// char const *p
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    char a ='A', b ='B';
    const char *ptr = &a;
     
    //*ptr = b; illegal statement (assignment of read-only location *ptr)
     
    // ptr can be changed
    printf( "value pointed to by ptr: %c\n", *ptr);
    ptr = &b;
    printf( "value pointed to by ptr: %c\n", *ptr);
}

C

// C program to illustrate
// char* const p
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    char a ='A', b ='B';
    char *const ptr = &a;
    printf( "Value pointed to by ptr: %c\n", *ptr);
    printf( "Address ptr is pointing to: %d\n\n", ptr);
 
    //ptr = &b; illegal statement (assignment of read-only variable ptr)
 
    // changing the value at the address ptr is pointing to
    *ptr = b;
    printf( "Value pointed to by ptr: %c\n", *ptr);
    printf( "Address ptr is pointing to: %d\n", ptr);
}

C

// C program to illustrate
//const char * const ptr
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    char a ='A', b ='B';
    const char *const ptr = &a;
     
    printf( "Value pointed to by ptr: %c\n", *ptr);
    printf( "Address ptr is pointing to: %d\n\n", ptr);
 
    // ptr = &b; illegal statement (assignment of read-only variable ptr)
    // *ptr = b; illegal statement (assignment of read-only location *ptr)
 
}

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *