Prev Up Next
Go backward to Apontadores II, variaveis "automaticas"
Go up to Alguns exercícios a exemplos dados nas aulas teóricas
Go forward to Mais apontadores

Imitando o malloc



 // -----------------------------------------------------------------------------
 // Apontadores III
 // Funcao semelhante a malloc

 #include <stdio.h>

 int *espaco(int);
 #define MAX 1000
 static int mem[MAX];
 static int *mp=mem;

 main(){
   int * p;  // equivalente a int p[]
   int * a;
   // p e a nao apontam para nenhum local especial (lixo)
   p=espaco(10);
   a=espaco(5);
   p[2]=-55;
   a[3]=999;
   printf("p[2]=%-d, a[3]=%-d\n",p[2],a[3]);
 }

 int *espaco(int n){
   int *t;
   if(mp+n>=mem+MAX)
     return(NULL);  // Nao ha' espaco!
   t=mp;
   mp+=n;
   return(t);  // apontador para n posicoes
 }
 /* Resultados:
 p[2]=-55, a[3]=999
 */

Prev Up Next