Hack x Crack - Comunidad de Seguridad informática
Programación => C / C++ => Mensaje iniciado por: Pino1952 en Noviembre 26, 2015, 09:28:16 pm
-
Hola a todos y que tengan un muy buen día.
int (*a)[35]; //declara un apuntador a un arreglo de 35 enteros.
int *a[35]; //declara un arreglo de 35 apuntadores a enteros.
Estudiando apuntadores en c me encontré con estas 2 declaraciones pero no las entiendo, alguien seria tan amable de poner algunas líneas de código para comenzar a entender algo del tema?.-
Es todo, intenté hacer un poco de práctica pero no logro hacer que el programa corra y no tengo nada para mostrar.-
Saludos.
Daniel
-
Enas , mira esto a ver si lo entiendes :
int array[35]; // un arreglo de 35 enteros
int (*a)[35]=&array;//puntero al inicio de arreglo
int *b[10]; // un arreglo de 10 punteros
(*a)[0]=12345; // asignamos un valor al puntero que apunta a la posicion 0 del arreglo
b[0]=a[0]; // metemos el puntero en el array de punteros
printf ("direccion de la posicion 0 del arreglo:0x0%x valor :%i\n",&array[0],array[0]);
printf ("direccion:0x0%x valor:%i\n",b[0],*b[0]); // vemos como trabajo la asignacion
He intentado explicarlo lo mejor que he podido.
Un saludo.
-
Visto desde el punto de vista del tipo creo que resulta más claro.
Para definir un array X de tipo T de N elementos hacemos en general algo como.
T X[N]
si T = int*, N = 35y X = a
temeos un array "a" de tipo int* de 35 elementos
int* a[35]
//que también se puede escribir como
int *a[35]
si tenemos T = int, N = 35, X = *a
tenemos un array "*a" de tipo int de 35 elementos, como X = *a es un apuntador al array de 35 elementos
int (*a)[35]
-
Hola.
Muchas gracias a ambos por ocuparse, muy pero muy buenas las 2 explicaciones, ya no me quedan dudas de que se trata.-
Saludos y un abrazo.-.
Daniel