結構體如下:
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...