資料結構與演算法(六)
阿新 • • 發佈:2019-01-11
跨函式使用記憶體
函式被呼叫後,記憶體會被自動釋放(作業系統拿回這塊記憶體的操作許可權,但是硬體上的記憶體還是有垃圾資料的,所以定義變數時都會初始化),這樣就不能跨函式使用記憶體,可以使用malloc()函式來動態分配記憶體,不呼叫free()函式不會釋放記憶體,直到所以所以程式執行完後才會釋放。
列子:
#include<stdio.h> #include<malloc.h> #include <string.h> struct Student { int num; char name[200]; int age; }; struct Student * creat_student(void) { struct Student *pst = (struct Student *)malloc(sizeof(struct Student)); pst->age = 24; (*pst).num = 007; strcpy(pst->name,"xu"); return pst; } void show_student(struct Student * p ) { printf("%d %s %d\n",p->num,p->name,p->age); } int main(void) { struct Student *st; st = creat_student(); show_student(st); return 0; }