int (*p)[2];
p=(int(*))malloc(sizeof(int[2])*100);
¿Cuál es la forma correcta de malloc un puntero a una matriz? No puedo entender la pieza con (int (*))puntero malloc a la matriz
int (*p)[2];
p=(int(*))malloc(sizeof(int[2])*100);
¿Cuál es la forma correcta de malloc un puntero a una matriz? No puedo entender la pieza con (int (*))puntero malloc a la matriz
comentarios envíos como respuesta:
En C
no se deben a emitir el valor de retorno de malloc
. Consulte this post en SO para obtener más información sobre por qué el valor de retorno de 0 de typecasting malloc
no es una buena idea en C
. Y si por alguna razón realmente quieres lanzar, debería ser (int(*)[2])
. (int(*))
es int *
. El tamaño pasado a malloc se ve bien (asignando un tamaño de 100 punteros a una matriz de 2 ints). Entonces usted debe estar haciendo
int (*p)[2];
p=malloc(sizeof(int[2])*100);
Espero que esto ayude!
No está claro lo que quiere aquí. Si quiere 100 pares int, por ejemplo, organizados como una matriz de punteros a int (donde cada puntero apunta exactamente a dos ints), entonces necesita llamar malloc 100 veces en 100 punteros a int, asignando dos enteros cada vez.
Simplemente no tiene sentido "malloc un puntero a una matriz". Puede malloc una matriz, y asignar esa dirección a un puntero, o puede malloc una matriz de punteros. Pero lo que has preguntado no está claro.
bien, pero ¿y si no sé que necesito 100 punteros en tiempo de ejecución? ¿y si necesito 10000? Creo que lo estoy haciendo bien. – titus
Creo que está bastante claro qué necesita el OP aquí. –
En C '(int (*))' debe evitarse. Se sugiere que no arroje el valor de retorno de 'malloc'. –
oh wow no hay más errores de compilación, gracias – titus
Y si realmente quieres lanzar, debería ser '(int (*) [2])'. '(int (*))' es 'int *'. El tamaño pasó a 'malloc' se ve bien (asignando un tamaño de 100 punteros a una matriz de 2 ints) –