terça-feira, 13 de setembro de 2016

array em C - diferentes formas de acesso

C++ code colored by C++2HTML
#include <stdio.h>
#include <stdlib.h>

void main (void) {
   int v[120];
   int i;
#if 0
   /*Acesso usual*/
   for (i=0;i<120;i++) {
      v[i]=i+1000;
   }
   for (i=0;i<120;i++) {
      printf ("%d ", v[i]);
   }
#endif
#if 0
   /*Acesso por ponteiro: como o tipo do elemento eh declarado e a região de memória é contínua, entao o endereco do elemento pode ser calculado. */
   for (i=0;i<120;i++) {
      *(v+i)=i+1000;
   }
   for (i=0;i<120;i++) {
      printf ("(%p, %d) ", v+i, *(v+i)); //imprime endereco e valor armazenado
   }
#endif
   /*Usa uma funcao para mapear uma matriz 10x12 no array de 120 elementos.*/
   for (i=0;i<10;i++) {
      int j;
      for (j=0;j<12;j++) {
         v[i*12+j]=i+j*12+1000;
      }
   }
   for (i=0;i<10;i++) {
      int j;
      for (j=0;j<12;j++) {
         printf ("%d ", v[i*12+j]);
      }
   }
}

Um comentário: