C Language Study - 結構體成員指標初始化

來源:互聯網
上載者:User

標籤:

結構體成員指標初始化

不可以正確啟動並執行初始化方式(1):

#include <stdio.h>#include <string.h>#include <malloc.h>//#include "a.h"//char a[100];struct stu{    char* name;    int num;}*pst,st;void init_pst(){    pst = (struct stu *)malloc(sizeof(struct stu));    //pst->name = (char*)malloc(sizeof(char*));    //pst->num = 0;}void free_pst(){    free(pst);}int main(void){    //strcpy(pst->name,"Jacy");    //pst->num = 99;    init_pst();    //test();    strcpy(pst->name,"Jacy");    pst->num = 99;    printf("%s %c",pst->name,pst->num);    free_pst();    return 0;}

不可以正確啟動並執行初始化方式(2):

#include <stdio.h>#include <string.h>#include <malloc.h>//#include "a.h"//char a[100];struct stu{    char* name;    int num;}*pst,st;void init_pst(){    NULL;    //pst = (struct stu *)malloc(sizeof(struct stu));    //pst->name = (char*)malloc(sizeof(char*));    //pst->num = 0;}void free_pst(){    free(pst);}int main(void){    //strcpy(pst->name,"Jacy");    //pst->num = 99;    init_pst();    //test();    strcpy(pst->name,"Jacy");    pst->num = 99;    printf("%s %c",pst->name,pst->num);    free_pst();    return 0;}


可以正確啟動並執行初始化方式:

#include <stdio.h>#include <string.h>#include <malloc.h>//#include "a.h"//char a[100];struct stu{    char* name;    int num;}*pst,st;void init_pst(){    pst = (struct stu *)malloc(sizeof(struct stu));    pst->name = (char*)malloc(sizeof(char*));    pst->num = 0;}void free_pst(){    free(pst);}int main(void){    //strcpy(pst->name,"Jacy");    //pst->num = 99;    init_pst();    //test();    strcpy(pst->name,"Jacy");    pst->num = 99;    printf("%s %c",pst->name,pst->num);    free_pst();    return 0;}


區別是,為整個結構體分配了記憶體,以及對結構體的指標成員進行了記憶體配置(指的是將這個指標指向一塊合法的記憶體,不是為自身分配記憶體,自身記憶體已經在定義的時候由編譯器分配了)


以後的編程習慣:結構體一定義,立馬進行初始化記憶體配置。

C Language Study - 結構體成員指標初始化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.