結構體陣列的指標初始化與記憶體釋放

2021-07-03 19:09:45 字數 654 閱讀 4338

結構體如下:

typedef structstudent

int num;

char* name;

} tom,*lily;

如果定義成tom的形式,不需要為結構體分配記憶體,但是需要對name分配記憶體

tom.name =(char*)malloc(sizeof(char)*n);

使用完畢要釋放記憶體:

free(tom.name);

如果定義成*lily的指標形式,則首先要對結構體分配記憶體

lily = (student*)malloc(sizeof(student));

然後再如上所示給name分配記憶體

用完後先釋放name的記憶體,再釋放結構體的記憶體

free(lily.name);

free(lily);

若要建立乙個有n元素結構體陣列student  *class

class =(student*)malloc(sizeof(student)*n)

初始化name

for(i = 0; iclass[i].name = (char*)malloc(sizeof(char)*m);

釋放記憶體

for(i = 0; ifree(class[i].name)

free(class);

結構體的初始化巢狀複製陣列指標

一 結構體示例及巢狀結構體 include include include using namespace std 定義乙個結構體 struct student 結構體巢狀 struct class int main void printf school.name,school.age,school...

陣列,結構體初始化 0

一直以為 int a 256 是把a的所有元素初始化為0,int a 256 是把a所有的元素初始化為1.除錯的時檢視記憶體發現不是那麼一回事,翻了一下 the c programming language 總算有定論。pdf的竟然不然複製,就把它這章翻譯了,如下 5.2.1 陣列初始化 陣列可以用...

結構體初始化 指定初始化

參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...