C, Malloc () y longitud de matriz [duplicado]
Posible duplicado:
Cómo encontrar el sizeof (un puntero que apunta a una matriz)
Estoy aprendiendo a crear una matriz dinámica en C, pero he encontrado un problema que no puedo resolver.
Si utilizo el código:
int num[10];
for (int i = 0; i < 10; i++) {
num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Me sale la salida:
sizeof num = 40
sizeof num[0] = 4
Esto es lo que esperaría que sucediera. Sin embargo si malloc el tamaño de la matriz como:
int *num;
num = malloc(10 * sizeof(int));
for (int i = 0; i < 10; i++) {
num[i] = i;
}
printf("sizeof num = %li\n sizeof num[0] = %li", sizeof(num), sizeof(num[0]));
Entonces me sale la salida:
sizeof num = 8
sizeof num[0] = 4
Tengo curiosidad por saber por qué el tamaño de la matriz es 40 cuando uso el método de longitud fija, pero no cuando usomalloc()
.