Cuántos bytes fueron asignados por double *p[10]; ?
Me pregunto entre 4 bytes (= tamaño de 1 puntero) y 10 x 4 bytes (= matriz de 10 punteros).
Es posible que desees volver a verificar el tamaño de un puntero en tu sistema. Podrían ser 4 bytes, pero hoy en día es más probable que sean 8 (depende totalmente de con qué estés trabajando, por supuesto). Menciono esto en caso de que hayas asumido punteros de 4 bytes, pero en realidad no cambia el contenido de la pregunta ni de la respuesta.
- Ken Wayne Vander Linde
27/03/2021 a las 15:18
1
Puedes preguntarle a tu compilador con printf("El tamaño es %zu bytes.\n", sizeof(double *[10]));. Tenga en cuenta que el identificador p se eliminó, dejando solo un tipo abstracto como operando de sizeof.
- Eric Postpischil
27/03/2021 a las 15:25
------------------------------------
Tiene una serie de diez punteros. Contiene valores falsos y deberías inicializarlo (tal vez borrarlo con memset).
En su máquina, diez punteros necesitan cuarenta bytes.
En mi escritorio (x86-64 con Ubuntu 20.04, usando un compilador GCC) necesitan 80 bytes
En algunos microcontroladores (quizás Arduino), un puntero puede ocupar sólo dos bytes. En 2021, utilizarás algún compilador cruzado para estos.
Vea esta referencia de C y algunos estándares de C como n1570 o superior.
Inspírate en el código fuente del software C de código abierto existente, como GNU make.
Y estudiar el código fuente de algún compilador de C de código abierto codificado en C, como tinycc.