The C Programming Language 学习(16)——struct 结构体

    技术2022-07-10  97

    结构体是自定义的数据类型,需要先声明结构体类型(模板),然后才能申明结构体变量。下面给出一种常用的结构体模板声明方式:

    struct  book {         //  struct 是关键字   book 自定义的结构体名

         char  name[MAXL];   // 结构体成员

         double  price;      

    } ;                          //结构体模板声明结束

    struct  book   lib, *plib, library[N] ;   // 声明结构体变量、结构体指针、结构体数组

    使用结构体要注意:

    1、结构体变量名不是地址

    plib = &lib; // 用&操作符取结构体变量的地址

    2、字符串成员尽量使用数组,用指针要注意初始化

    struct  pbook {         //指针成员模板

         char  *pname;   //  结构体中只存储了字符串的地址

         double  price;      

    } plib;   

    plib = { " C Primer Plus ", 105.5 }; // 常量字符串 C Primer Plus 存储在数据区,pname存储它的首地址

    但如果读入字符串变量,由于pname没初始化,可能产生未知的错误。一个解决办法是,定义一个临时数组接收输入的变量,根据需要为pname动态分配地址,再拷贝数组到指针变量。

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXL 80 // struct pbook { char *pname; double price; }; int main() { struct pbook lib; char temp[MAXL]; //临时保存书名 gets(temp); //根据书名长度分配存储空间 lib.pname=(char*)malloc(strlen(temp)+1); strcpy(lib.pname,temp); scanf("%lf",&lib.price); printf("%s %.2f",lib.pname,lib.price); free(lib.pname); return 0; }

     

     

     

                     

     

    Processed: 0.019, SQL: 9