1. 程式人生 > >資料結構與演算法(六)

資料結構與演算法(六)

跨函式使用記憶體
函式被呼叫後,記憶體會被自動釋放(作業系統拿回這塊記憶體的操作許可權,但是硬體上的記憶體還是有垃圾資料的,所以定義變數時都會初始化),這樣就不能跨函式使用記憶體,可以使用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;

}