Ampliación de la estructura del ejemplo un poco, considere esto:
#include <stdio.h>
int main(int argc, const char *argv[]) {
typedef struct {
char* name;
char* sex;
char* insurace;
int age;
int yearInSchool;
float tuitionDue;
}student;
//Now I can do two things
student p;
//or
student *p = (student *)malloc(sizeof(student));
return 0
}
C a es un lenguaje que pasa implícitamente por valor, en lugar de por referencia. En este ejemplo, si pasamos 'p' a una función para hacer algo de trabajo en ella, estaríamos creando una copia de toda la estructura. Esto usa memoria adicional (el total de espacio que requeriría esa estructura particular), es más lenta y potencialmente no se escala bien (más sobre esto en un minuto). Sin embargo, al pasar * p, no pasamos toda la estructura. Solo estamos pasando una dirección en la memoria que se refiere a esta estructura. La cantidad de datos pasados es menor (tamaño de un puntero), por lo tanto, la operación es más rápida.
Ahora, sabiendo esto, imagina un programa (como un sistema de información del estudiante) que tendrá que crear y gestionar un conjunto de registros en los miles o incluso decenas de miles. Si pasa toda la estructura por valor, le llevará más tiempo operar en un conjunto de datos, que simplemente pasar un puntero a cada registro.
Mantener la programación en C y usted sabrá por qué. – insumity
Lea un buen libro de programación de C. Explicará el montón de memoria asignada mucho mejor y más rápido de lo que puedo explicar en unos minutos. –
Usted debe aprender acerca de las diferencias entre pila y pila de memoria, echar un vistazo a esta pregunta: http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap – jlledom