(語法)理解結構指標和動態分配記憶體
阿新 • • 發佈:2018-12-31
結構體即我們自定義的資料型別,平時經常用到,結構體指標即將指標加入到一個型別中,理解結構體指標對學習指標可以進一步深入理解,並在連結串列等格式中運用非常廣泛,以下面程式舉例分析:
結構體的定義struct student#include <stdio.h> #include <stdlib.h> #include <string.h> struct student{ char *name; int score; struct student* next; }; student stu; student* stu1; int main(){ stu.name = (char*)malloc(sizeof(char)); /*1.結構體成員指標需要初始化*/ strcpy(stu.name,"Jimy"); stu.score = 99; stu1 = (struct student*)malloc(sizeof(struct student));/*2.結構體指標需要初始化*/ stu1->name = (char*)malloc(sizeof(char));/*3.結構體指標的成員指標同樣需要初始化*/ stu.next = stu1; strcpy(stu1->name,"Lucy"); stu1->score = 98; stu1->next = NULL; printf("name %s, score %d \n ",stu.name, stu.score); printf("name %s, score %d \n ",stu1->name, stu1->score); free(stu1); return 0; }
{
char* name;
int score;
student* next;
};
struct用來定義一個結構體型別,後面跟一個型別名字,這裡是student(和int,char一樣,只是個型別名),在下面的{}中,是這個結構體中的資料型別。第一個是定義了char型的指標變數name,第二行定義了int變數score,第三行定義了我們剛才自定義的資料型別student型的指標變數next。
下面的student stu;和studeng* stu1;分別定義了student型別的變數stu和student型別的指標變數stu1。
在下面的主函式中,stu.name = (char*)malloc(sizeof(char));
下面的 strcpy(stu.name,"Jimy");就開始為就開始為指標name賦值了,即將字串“jimy”賦值給變數stu的name。
下面stu1 = (student*)malloc(sizeof(student))這一句是動態分配一個student型別的記憶體空間,將他的首地址賦值給指標變數stu1,即stu1就有了一個student型別的記憶體地址可供使用。
下面的stu1->name = (char*)malloc(sizeof(char));
後面的stu1->score = 98; stu1->next = NULL;是為stu1變數中的兩個資料型別賦值,注意的是如用指標來便是結構變數,那就可以用->來直接引用該變數下面的物件。
下一篇主要分析結構體指標在連結串列中的應用及用法,還是要深入理解指標及其用法。