Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: abaadoon en 12 Febrero 2016, 04:33 am



Título: ayuda con punteros a estructura
Publicado por: abaadoon en 12 Febrero 2016, 04:33 am
ayuda necesito saber como hacer para que muestre la direccion de memoria
/*11. Dado un arreglo de 10 elementos ={1, 2, 3, 4, 4, 7, 8, 9, 5, 4},
escribir un programa en C  (haciendo uso de puntero) que muestre las
direcciones de memoria de cada elemento del arreglo.*/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#define TAM 20
typedef struct Numeros{ //definimos el tipo de dato con typedef
   int vector;
   struct Numeros *next;
       struct Numeros *atras;
}DATOS;

DATOS *base, *one, *p;
int opc, busca, r, caux, i, j, J;
int mas=0;
char op;

void agregar();
void mostrar(DATOS *ptr);
void pornumero(DATOS *ptr);
int main(){
   do{
      system("reset");
      printf("------menu------\n");
      printf("A - ingrese los 10 datos\n");
      printf("B - mostrar los numeros\n");
      printf("S - salir\n");
      printf("escoja una opcion\n");
      scanf("%c",&opc);
      opc=toupper(opc);
      switch(opc){
         case 'A' :   agregar(p);
         break;
         case'B' :
            system("clear");
              if(one!=NULL){             //valida si hay datos o no
                J=0;
                p=one;
               setbuf(stdin,NULL);
               for(i=0;p!=NULL;i++)  {       //ciclo que llama a funcion mostrar()
                  mostrar(p);
                  p=p->next;
                  J++;
                  if(J>=4){
                     
                     J=0;
                     printf("\t\t VER SIGUIENTES....");
                     getchar();
                     getchar();
                     system("clear");
                  }   
               }
               printf("\n\t PRESIONE UNA TECLA PARA CONTINUAR..."); }
               else{
                  printf("\n\n No existen registros actualmente para mostrar.");
               }
               getchar();
               getchar();
            break;
         break;
      }
   }while(opc!='S');    //fin de ciclo menu principal
   return 0;

}
void agregar(void){
   for(i=0;i<10;i++,j++) {       //ciclo para agregar datos y llevar registro de datos introducidos.
      system("clear");
      base=(DATOS *) malloc(sizeof(DATOS)); //puntero a bloque
      printf("datos la posicion %d : ",mas++);
      scanf("%d",&base->vector);
      setbuf(stdin,NULL);
      if(one==NULL){   
         one=base;
         base->next=NULL;
      }
      else{
         base->next=one;
         one=base;
      }
   }
}

void mostrar(DATOS *ptr){
   printf("\n # valor: %d",ptr->vector);
}    


Título: Re: ayuda con punteros a estructura
Publicado por: 0xFer en 12 Febrero 2016, 04:49 am
usa el operador & para mostrar las direcciones de memoria:

Código
  1. int array[10] = {1, 2, 3, 4, 4, 7, 8, 9, 5, 4};
  2. int i;
  3. for(i =0; i<10;i++){
  4.    printf(" %p \n", &array[i]);
  5. }

Saludos.