segunda-feira, 22 de fevereiro de 2010

Porquê o C é perigoso ?

Bem. Temos aqui uma forma feia e estúpida de se utilizar ponteiros sem declará-los.

#include
#include
#include

typedef struct nodo{
struct nodo *prox;
int alg;
char inf;
}Nodo;

int main(){

unsigned int apontador;
unsigned int outro_apontador;
char *string="this is a string";
int i;

apontador = malloc(sizeof(Nodo));

((Nodo*)apontador)->inf = 'x';
((Nodo*)apontador)->alg = 172;

printf("%c \n", ((Nodo*)apontador)->inf );
printf("%d \n", ((Nodo*)apontador)->alg );

printf("\n");

outro_apontador = string;

printf("%s", ((Nodo *)outro_apontador));

printf("\n");
for(i=0;i printf("%c", ((Nodo *)outro_apontador)[0]);
outro_apontador+=sizeof(char);
}

printf("\n");
return 0;
}


Esta é uma forma te dizer que, em C, no final, tudo é memoria. Você pode utilizar unsigned int pra implementar praticamente qualquer coisa que normalmente se utilizam ponteiros.

É claro, que isso apenas pra aprendizado, não saia por ai fazendo isso, pois isso rouba a legibilidade do código em momento posterior, até mesmo para o autor.

Um comentário: