结构体定义
引入:数据类型分为
1.基本数据类型(定点存储和浮点存储)
2.指针类型
3.扩展类型(复合类型)
(1)数组 变量数量扩展
(2)枚举 值的可读性
(3)结构体(struct)
(4)联合体(union)
今天所了解的是结构体与联合体
一.结构体
1.结构体定义:
在一个主题下组装一个类型。
#include <stdio.h> int main() { /*定义一个结构体*/ typedef enum cardtype{SFZ,XSZ,JSZ} CARD_TYPE; struct stu_infor { int StuNum; CARD_TYPE CardType; char CardNum[30]; char StuName[30]; char Sex; }s1; /*创建结构体变量并且赋值*/ /*1.创建变量 (1)在struct后直接创建(如上) (2)单独定义(如下)*/ struct stu_infor s2; /*2.赋值*/ //(1)按顺序赋值 struct stu_infor s3={3,SFZ,"2404020201",'m'}; //(2).式赋值 struct stu_infor s3={.sex='m',.StuNum=4}; /*键盘输入*/ scanf_s("%d%d%s%s %c", &s1.StuNum, &s1.CardType, s1.CardNum, 30, s1.StuName, 30,&s1.Sex,1); //整形加取地址符号,字符串需要用““,但是c语言中数组名就为地址不用加&,字符用’‘。 }
2.结构体数组以及typedef的灵活运用
#include <stdio.h> /*定义一个结构体*/ typedef struct book { int year; char writer[30]; char bookName[30]; double price; }Book; //typedef整个数据类型为Book typedef struct book BOOK; //typedef struct数据类型为BOOK ,两种定义方法均可 int main () { /*创建结构体数组变量*/ //int arr[4] = { 1,2,3,4 }; Book books[4] = { {2000,"谭浩强","C语言从入门到放弃",28.8}, {2000,"吴军","浪潮之巅",68.2}, {2000 ,"毛泽东","论持久战",48.6}, {1998 ,"刘慈欣","三体",58.2} }; /*为结构体成员赋值 用.操作符*/ for (int i = 0; i < sizeof(books) / sizeof(books[0]); i++) { printf("%-6d %-10s %-20s %.2f\n",books[i].year,books[i].writer,books[i].bookName,books[i].price); } return 0; }
3.结构体指针
/*使用指针操作结构体成员*/ /*方式一: (*指针).成员*/ (*q).price = 10; /*方式二: 指针 -> 成员*/ p->price = 20; strcpy(p->bookName, "C语言从入门到精通");