#include <stdio.h> // scanf(), printf() #include <stdlib.h> // calloc(), free() int main() { // declarar constante o conteúdo da memória apontada, mas // o ponteiro poderá ser alterado const int *x = (const int *) calloc( 1, sizeof(int) ); // aviso por modificar o conteúdo da memória apontada scanf("%d", x); // erro por tentar modificar o conteúdo da memória apontada // *x = 3210; // declarar constante o conteúdo do ponteiro, mas // o conteúdo da memória apontada poderá ser modificado int * const w = (int * const) calloc( 1, sizeof(int) ); // erro por tentar alterar o ponteiro // w = x; // modificando o conteúdo da memória apontada *w = 123456; printf("x: %d\n", *x ); printf("w: %d\n", *w ); // modificando o ponteiro x = w; printf("x: %d\n", *x ); free( (void*)x ); free( (void*)w ); return 0; }
quarta-feira, 11 de setembro de 2013
Tornando constante o ponteiro ou a memória apontada
O código a seguir apresenta a diferença entre tornar constante o valor do ponteiro ou valor na memória por ele apontada.