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;

}
View Code

 二.指向结构的指针

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 }
View Code

【指针形式的代码】:

#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

 

 

 

 

 

  

posted @ 2018-01-18 15:55  Justice-V  阅读(120)  评论(0)    收藏  举报