结构体定义
引入:数据类型分为
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语言从入门到精通");
拼多多集团-PDD公司福利 817人发布
查看10道真题和解析