elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Una forma curiosa de dar un tamaño.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Una forma curiosa de dar un tamaño.  (Leído 1,519 veces)
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Una forma curiosa de dar un tamaño.
« en: 2 Diciembre 2015, 22:16 pm »

Cuándo se usa la función malloc, por ejemplo, y una llamada básica podría ser algo así:

int *p = malloc(sizeof(int) * 5);

Y ahora viene la parte curiosa y mi planteamiento:

int arr[5] es un array de enteros.
int (*p)[5] es un puntero a un array de 5 enteros.
Lo único que tienen en común los dos son el tipo de dato, int, y el tamaño del array, 5. El nombre que le demos no tiene imporancia. Si se obvia dicho nombre nos debería dar un tamaño pero sin declarar nada.

Por tanto el código antes escrito podría codificarse de una forma un poco más intuitiva:

int *p = malloc( sizeof(int[5]) );

Y funciona, al menos con GCC.

>>> Editado porqué estas líneas no tienen un sentido práctico <<<

También funciona:

int *p = malloc( sizeof(int[5][5]) );

y

int **p = malloc( sizeof(int[5][5]) );


>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<

¿Qué os parece?


« Última modificación: 20 Diciembre 2015, 20:04 pm por MAFUS » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Una forma curiosa de dar un tamaño.
« Respuesta #1 en: 3 Diciembre 2015, 09:11 am »

Y
Código
  1. int**** p = (int****)malloc( sizeof(int[5][5]) );

Realmente, es un método más complejo, pudiendo tener sizeof(int)*N.


En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: Una forma curiosa de dar un tamaño.
« Respuesta #2 en: 7 Diciembre 2015, 21:33 pm »

No tiene nada de raro, es algo básico, si tú intentas mandar una matriz a una funcion como referencia y no das tamaño de columnas te marcará que es de tamaño int (*)[tam], GCC da ese parámetro como mínimo, quizá deberías leer un libro más avanzado de C para terminologías extrañas o diferentes.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Una forma curiosa de dar un tamaño.
« Respuesta #3 en: 9 Diciembre 2015, 21:57 pm »

Sí, pero apuntaba a que no se ve, en C, ese tipo de construcción: int[5], por ejemplo, es mas tipo notación de C#, como en
Código
  1. int[] v = new int[5];
pero sin embargo es válida y muy parecida  :rolleyes:
Código
  1. int* p = malloc(sizeof(int[5]));
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines