第四天初识c语言
1.结构体
结构体就是用于描述复杂对象而创建出来的一种类型
复杂对象例如:
描述一个人--名字,性别,年龄,地址,电话号码,身份证号等。。。
描述一本书--名字,作者,页数,定价等。。。
在c语言中要对这个人,书进行描述,需要用到结构体
struct 是结构体关键字
下面将利用代码来描述一个人:
#include<stdio.h> struct PEOPLE {//PEOPLE是这个结构体的名字 int serial_number; char name[20]; char gender[10]; char phone_number[55]; char address[8888]; char identity_card_number[88]; }; int main() { struct PEOPLE a1 = {1,"小明","男","17613945236","湖北省宜昌市西陵区","411524200301151111"}; printf("序号:%d\n", a1.serial_number); printf("姓名:%s\n",a1.name); printf("性别:%s\n", a1.gender); printf("手机号:%s\n", a1.phone_number); printf("家庭住址:%s\n", a1.address); printf("身份证号码:%s\n", a1.identity_card_number); return 0; }
结构体的声明形式为:
struct结构体名
{
成员列表
};
char name[20];这个是数组的声明;
下面将利用指针打印它们的值
#include<stdio.h> struct PEOPLE {//PEOPLE是这个结构体的名字 int serial_number; char name[20]; char gender[10]; char phone_number[55]; char address[8888]; char identity_card_number[88]; }; int main() { struct PEOPLE a1 = {1,"小明","男","17613945236","湖北省宜昌市西陵区湖北三峡职业技术学院","411524200301156511"}; //a1是一个结构体变量 struct PEOPLE* pb = &a1; //利用指针来打印它们的成员 printf("%d\n", (*pb).serial_number); printf("%s\n", (*pb).name); printf("%s\n", (*pb).gender); printf("%s\n", (*pb).phone_number); printf("%s\n", (*pb).address); printf("%s\n", (*pb).identity_card_number); printf("------------------------------------\n"); //------------------------- //结构体指针->成员(更好理解) printf("%d\n", pb->serial_number); printf("%s\n", pb->name); printf("%s\n", pb->gender); printf("%s\n", pb->phone_number); printf("%s\n", pb->address); printf("%s\n", pb->identity_card_number); return 0; }
对成员的值进行修改
#include<stdio.h> #include<string.h>//引入头文件,方便对库函数的调用,目标是实现对数组内容的修改 struct PEOPLE {//PEOPLE是这个结构体的名字 int serial_number; char name[20]; char gender[10]; char phone_number[55]; char address[8888]; char identity_card_number[88]; }; int main() { struct PEOPLE a1 = {1,"小明","男","17613945236","湖北省宜昌市西陵区","411524200301151111"}; //a1是一个结构体变量 struct PEOPLE* pb = &a1; //利用指针来打印它们的成员 printf("%d\n", (*pb).serial_number); printf("%s\n", (*pb).name); printf("%s\n", (*pb).gender); printf("%s\n", (*pb).phone_number); printf("%s\n", (*pb).address); printf("%s\n", (*pb).identity_card_number); printf("------------------------------------\n"); //------------------------- //结构体指针->成员(更好理解) printf("%d\n", pb->serial_number); printf("%s\n", pb->name); printf("%s\n", pb->gender); printf("%s\n", pb->phone_number); printf("%s\n", pb->address); printf("%s\n", pb->identity_card_number); printf("------------------------------------\n"); //结构体变量.成员 printf("序号:%d\n", a1.serial_number); printf("姓名:%s\n",a1.name); printf("性别:%s\n", a1.gender); printf("手机号:%s\n", a1.phone_number); printf("家庭住址:%s\n", a1.address); printf("身份证号码:%s\n", a1.identity_card_number); printf("------------------------------------\n"); //对成员的值进行修改 a1.serial_number = 2; printf("修改后的序号:%d\n", a1.serial_number); /*a1.phone_number = "15549359896"; printf("手机号:%s\n", a1.phone_number); *///字符串不能够直接修改,否则直接报错 //原因是"phone_number"是数组名,数组不可以直接改 //而变量可以直接改 //如果要对数组里面的值进行改变,需要引入库函数--strcpy--引入库函数还需要引入这个包含库函数的头文件string.h; strcpy(a1.phone_number,"15549356861"); printf("修改后的手机号:%s\n", a1.phone_number); return 0; }