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);
}