结构体(第十四章 )

Posted 山川湖海*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体(第十四章 )相关的知识,希望对你有一定的参考价值。

 

 

※目录:

 

一、结构体简单运行实例

 

二、结构体具体使用

 

  1. 声明
  2. 定义
  3. 初始化
  4. 访问

 

三、结构数组

 

四、指向结构的指针

 

  1. 声明初始化
  2. 访问

 

 

 

 

一、结构体最简单的运行实例

 

结构体是描述结构如何组合的主要方法。

以下为创建图书目录的一个简单实例:

#include<stdio.h>
#define MaxTitle 41
#define MaxAuther 31

struct Book{//单词book为一个可选标记
    char title[MaxTitle];
    char auther[MaxAuther];
    float value;
};//结构声明

int main(void){
    struct Book library;//定义结构变量
    printf("请输入书名:\n");
    gets(library.title);
    printf("请输入作者名:\n");
    gets(library.auther);
    printf("请输入价格:\n");
    scanf("%f",&library.value);
    printf("《%s》自 %s:(%.2f)元\n",library.title, library.auther, library.value);
    printf("完成.\n");

    return 0;
}

 运行示例:

请输入书名:
Dog
请输入作者名:
Lisa
请输入价格:
12
《Dog》自 Lisa:(12.00)元
完成.

Process returned 0 (0x0)   execution time : 43.283 s
Press any key to continue.

 

 

 

 

二、结构体的具体使用

1.建立结构声明:

struct Book{//单词book为一个可选标记
    char title[MaxTitle];
    char auther[MaxAuther];
    float value;
};//结构声明
  • 可选标记:Book

 

2.定义结构变量

经过声明已经描述了结构如何组合,接下来“创建一个结构变量”。

int main(void){
    struct Book library;//定义结构变量
    //必须定义变量后方可运用.........

    return 0;
}

编译器创建一个变量library,编译器使用book模板为该变量分配空间,

例如:

struct Book a, b, *c;

ps:声明和定义的合并

声明结构和定义结构变量可以被合并成一步,如下(不需要使用标记):

struct { //无标记
    char title[MaxTitle];
    char auther[MaxAuther];
    float value;
}library;
只可使用一次,如果要反复使用见后面typedef。

 

3.初始化结构

前面的例子没有进行初始化,初始化见下:

struct Book library{
     "小狗钱钱",
     "博多舍费尔",
      34
};

如要进行指定初始化:

struct Book d { .value = 10.99 };

 

4.访问结构成员

gets(library.title);
//
scanf("%f",&library.value);

 

 

 

三、结构数组

把Book程序扩展成可以使用更多的书。

#include<stdio.h>
#define MaxTitle 41
#define MaxAuther 31
#define MaxBooks 100

struct Book{
    char title[MaxTitle];
    char auther[MaxAuther];
    float value;
};//建立结构体

int main(void){
    struct Book library[MaxBooks];//定义结构数组
    //......
}

这是表示每个成员:

library[0].value;

 

 

 

四、指向结构的指针

1.声明和初始化指针

//声明很简单
struct guy * him;

关键字struct ,结构标记 guy, 然后是一个*号,再加结构名。

ps:声明之后意味着him可以指向任何一个 guy 类型的结构。

 

如果 Tom 是一个guy类型的结构,可以:

him = &Tom;//表示地址使用取址符

而如果是个结构数组:

him = &Hengzhi[0];

 

2.如何用指针访问成员

以下是三种方法:

him->income is fellow[0].income if him == &fellow[0] //最常用的方法

follow[0].income == (*him) .income

barney.income == (* him) .income == him->income

 

以上是关于结构体(第十四章 )的主要内容,如果未能解决你的问题,请参考以下文章

C primer plus 读书笔记第十四章

《深入浅出MFC》第十四章 多线程程序设计

C++Primer 第十四章

算法导论笔记——第十二~十四章 数据结构树

算法导论读书笔记-第十四章-数据结构的扩张

第十四章Linux 账号管理与 ACL 权限配置