You are on page 1of 3

Tenemos cuatro casos en que se relacionan la palabra reservada const y los punteros: 1. 2. 3. 4.

APUNTADOR CONSTANTE / VALOR CONSTANTE APUNTADOR NO CONSTANTE / VALOR CONSTANTE APUNTADOR CONSTANTE / VALOR NO CONSTANTE APUNTADOR NO CONSTANTE / VALOR NO CONSTANTE

Apuntador Constante / Valor constante


const int * const ptrA = &valor;

Se debe inicializar el puntero, sino el compilador emitir un error. Operaciones no permitidas Ninguna asignacin es permitida:
*ptrA=5; //error ptrA = ptrB; //error

Apuntador no constante / Valor constante


const int *ptrA; //Se puede dejar sin inicializar

Operaciones no permitidas Asignacin del apuntador desreferenciado:


*ptrA = 5;//error

Operaciones permitidas:
ptrA = &valor;//bien

Apuntador constante / Valor no constante


int * const ptrA = &valor;//debe inicializar

Operaciones no permitidas: Asignacin del puntero:


ptrA = ptrB; //error

Operaciones permitidas:
*ptrA = 5;//bien

Apuntador no constante / Valor constante

int *ptrA; //se puede dejar sin inicializar

Operaciones permitidas: Todas:


ptrA = &valor;//bien ptrA +=5;//bien

Ejemplos:
//Apuntador y const #include <iostream> using std::cout; using std::endl; int main() { int valorA = 1; int valorB = 2; const int * const ptrValorA = &valorA; //puntero constante a valor constante //*ptrValorA=5;//error:Apunta a un dato constante //ptrValorA=&valorB;//error:El puntero es constante const int * ptrValorB = &valorA; //puntero no constante a un valor constante //*ptrValorB=5; //error:No se puede ya que su desrefencia es constante ptrValorB = &valorB; //se puede porque el puntero es no constante //int * const ptrValorC;//error:Un puntero constante se debe inicializar const int * ptrValorD;//Bien, ptrValorD puede tomar valores, pero no desreferenciado. int * const ptrValorE = &valorB;//puntero constante apuntando a un valor no constante (*ptrValorE)++; //La desreferencia se puede modificar //ptrValorE = ptrValorA;//error el puntero es constante return 0; }

Ver como hacer para compilar este programa. Publicado por santi en 1:50 a.m. Etiquetas: apuntadores, const, pointers, punteros 1 comentario:

Annimo dijo...

Hola, queria comentarte que creo q hay un error de tipeo importante en esta seccion, fijate que en las descripciones aparec dos veces: "Apuntador no constante / Valor constante" y en la 2da descripcion dice: int *ptrA; //se puede dejar sin inicializar Operaciones permitidas: Todas: ptrA = &valor;//bien ptrA +=5;//bien lo cual es correcto para "Apuntador no constante / Valor NO constante" Bueno, espero ser de ayuda. Suerte!

You might also like