C语言 第八课 结构体
结构体
一.结构体结构(两种)
1. struct name //结构体关键字 结构体类名
{
//结构体元素
};
2. struct name //结构体关键字 结构体类名
{
//结构体元素
} d1,d2; //结构体变量
1 #include<stdio.h> 2 #include <string.h> 3 4 struct task //结构体 结构体类名 5 { 6 //结构体元素 7 char task_one[50]; 8 char task_two[50]; 9 int task_id; 10 11 }; 12 13 int main() 14 { 15 struct task task1; //声明变量task1,类型task 16 struct task task2; //声明变量task2,类型task 17 18 //task1详细 19 strcpy(task1.task_one,"学习C语言"); 20 strcpy(task1.task_two,"C++"); 21 task1.task_id=20180318; 22 23 //task2详细 24 strcpy(task2.task_one,"Python"); 25 strcpy(task2.task_two,"Javascript"); 26 task2.task_id=20180418; 27 28 29 //打印task1 30 printf("task1 one: %s\n",task1.task_one); 31 printf("task1 two: %s\n",task1.task_two); 32 printf("task1 id: %d\n",task1.task_id); 33 34 //打印task2 35 printf("task1 one: %s\n",task1.task_two); 36 printf("task1 two: %s\n",task1.task_two); 37 printf("task1 id: %d\n",task1.task_id); 38 39 40 return 0; 41 42 }
第二种
#include<stdio.h> #include <string.h> struct task //结构体 结构体类名 { //结构体元素 char task_one[50]; char task_two[50]; int task_id; } task1,task2;//直接在此处定义 int main() { //task1详细 strcpy(task1.task_one,"学习C语言"); strcpy(task1.task_two,"C++"); task1.task_id=20180318; //task2详细 strcpy(task2.task_one,"Python"); strcpy(task2.task_two,"Javascript"); task2.task_id=20180418; //打印task1 printf("task1 one: %s\n",task1.task_one); printf("task1 two: %s\n",task1.task_two); printf("task1 id: %d\n",task1.task_id); //打印task2 printf("task1 one: %s\n",task1.task_two); printf("task1 two: %s\n",task1.task_two); printf("task1 id: %d\n",task1.task_id); return 0; }
二.指向结构的指针
struct Books *struct_pointer;
现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:
struct_pointer = &Book1;
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
struct_pointer->title;
【一般情况的代码】:
1 #include<stdio.h> 2 #include <string.h> 3 void printbook(struct task task1);//打印函数声明 4 struct task //结构体 结构体类名 5 { 6 //结构体元素 7 char task_one[50]; 8 char task_two[50]; 9 int task_id; 10 11 } task1,task2; 12 13 int main() 14 { 15 16 //task1详细 17 strcpy(task1.task_one,"学习C语言"); 18 strcpy(task1.task_two,"C++"); 19 task1.task_id=20180318; 20 21 //task2详细 22 strcpy(task2.task_one,"Python"); 23 strcpy(task2.task_two,"Javascript"); 24 task2.task_id=20180418; 25 26 printbook(task2); 27 printbook(task1); 28 29 return 0; 30 31 } 32 void printbook(struct task task1) //打印函数 33 { 34 //打印task1 35 printf("task1 one: %s\n",task1.task_one); 36 printf("task1 two: %s\n",task1.task_two); 37 printf("task1 id: %d\n",task1.task_id); 38 39 40 }
【指针形式的代码】:
#include<stdio.h> #include <string.h> void printbook(struct task *task1); struct task //结构体 结构体类名 { //结构体元素 char task_one[50]; char task_two[50]; int task_id; } task1,task2; int main() { //task1详细 strcpy(task1.task_one,"学习C语言"); strcpy(task1.task_two,"C++"); task1.task_id=20180318; //task2详细 strcpy(task2.task_one,"Python"); strcpy(task2.task_two,"Javascript"); task2.task_id=20180418; printbook(&task2); printbook(&task1); //这里多个& return 0; } void printbook(struct task *task1) { //打印task1 //这里把(.)变为(->) printf("task1 one: %s\n",task1->task_one); printf("task1 two: %s\n",task1->task_two); printf("task1 id: %d\n",task1->task_id); }
【输出结果】
task1 one: Python task1 two: Javascript task1 id: 20180418 task1 one: 学习C语言 task1 two: C++ task1 id: 20180318
一个二次元的生物

浙公网安备 33010602011771号