结构体(第十四章 )

※目录:

一、结构体简单运行实例

二、结构体具体使用

  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

原文地址:https://www.cnblogs.com/yangf428/p/11246417.html

时间: 2024-11-06 09:59:48

结构体(第十四章 )的相关文章

R in action读书笔记(19)第十四章 主成分和因子分析

第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法.它通过寻找一组更小的.潜在的或隐藏的结构来解释已观测到的.显式的变量间的关系. PCA与EFA模型间的区别 主成分(PC1和PC2)是观测变量(X1到X5)的线性组合.形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个

第十四章 软件、硬件发展史上的风风雨雨中的一声悲叹!

第十四章   软件.硬件发展史上的风风雨雨中的一声悲叹! 睡不着.感而写之. 忠言逆耳.良语苦口.高山流水.曲高和寡. 我的感觉,计算机已经发展到了一个死胡同.我们似乎只是在兜圈子,从最初的汇编写的UNIX操作系统,到如今的C语言写的WINDOWS.LINUX.我 们应该反思.到底技术上进步了很多?还是原地兜圈子?从汇编,到C语言.脚本语言,到C++.C#.JAVA,到VB等等所谓的高级语言:似乎取得很多进步了.我们面向对象编程啊,抽象了类.逐步贴近自然语言了.真的?我极端怀疑!人类的自然语言描

MiS603开发板 第十四章 UDP协议网络传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十四章 UDP协议网络传输 本实验将实现FPGA 芯片和PC 之间进行千兆以太网数据通信, 通信协议采用Ether

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

java-第十四章-代参的方法(二)-实现MyShopping系统的添加会员功能

 package com.wxws.sms; public class Customer {  int No;  int integarl; } package com.wxws.sms; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust){   for (int i = 0; i <customers.length; i++) {    if (c

java-第十四章-代参的方法(二)-查找会员积分

 package com.wxws.smsB; public class Customer {  int No;  int integarl; } package com.wxws.smsB; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust) {   for (int i = 0; i < customers.length; i++) {    i

c++第十四章-(类型强转换)

类型强转换有2种. class Company { public: Company(std::string theName,std::string theProduct); virtual void printInfo(); protected: std::string name; std::string product; }; Company::Company(std::string theName,std::string theProduct) { this->name = theName;

Java-第十四章-代参的方法(二)-编程实现,输入班里10名学生的身高,获得身高最高的学生要求对象数组类型方法

package com.ww.yzpA; public class Students { int No; int Height; } package com.ww.yzpA; public class Height { public Students getMaxHeigth(Students[] str) { Students A = new Students(); for (int i = 0; i < str.length; i++) { if (str[i].Height > A.He

CSS3秘笈复习:十三章&amp;十四章&amp;十五章&amp;十六章&amp;十七章

第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮动元素.关键字:left.right或both. (2).浮动外围元素:让包含浮动元素的<div>也浮动.选择这种方法一定要在浮动容器后面的任何元素中添加一个clear属性,确保浮动元素落到容器的下方. (3).利用overflow : hidden.另一种常见的方法是在外围的样式中添加以下属性:

JavaScript高级程序设计:第十四章

第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而与其他HTML元素具有相同的默认属性.不过,HTMLFormElement也有它自己下列独有的属性和方法. 取得<form>元素的引用方式有好几种.其中最常见的方式就是将它看成与其他元素一样,并为其添加id特性,然后再像下面这样使用getElementById()方