0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

定义结构体的同时声明变量

CHANBAEK 来源:小木编程 作者: 小木之 2023-03-14 17:29 次阅读

定义结构体的同时声明变量

#include


struct book
{
  int id;
  char name[20];
  char type[20];
}book1; // 在这里直接声明变量

int main()
{
  scanf("%d %s %s",&book1.id,&book1.name,&book1.type);
  printf("编号:%d 名称:%s 类型:%s",book1.id,book1.name,book1.type);
  return 0;
}
输入:
1 西游记 四大名著
输出结果:
编号:1 名称:西游记 类型:四大名著
  • 在定义结构体的同时,我们在结构体末尾的 } 处直接声明所需变量,相比起在主函数内再用struct book book1; 来声明变量要方便快捷的多。
  • 注意变量名后要以分号结尾。

使用typedef,让结构体的使用更方便

#include


typedef struct book
{
  int id;
  char name[20];
  char type[20];
}book;

int main()
{
  book book1;
  scanf("%d %s %s",&book1.id,&book1.name,&book1.type);
  printf("编号:%d 名称:%s 类型:%s",book1.id,book1.name,book1.type);
  return 0;
}
  • 在不使用typedef的情况下,我们使用结构体来声明变量时需要加上struct,如:struct book book1。
  • 并且在有些情况下结构体的名字很长,当我们需要声明变量时,就会让代码看起来繁琐。
  • 这个时候,使用typedef为这个结构体定义一个使用它时的名字,我们就可以像使用 int 之类的变量类型一样,来使用结构体了。
  • 在本例中,我们将book结构体还用book来进行typedef定义。
  • 这样定义之后,我们就可以直接用“ book 变量名”来声明变量了。

定义结构体的位置:

  • 定义结构体的位置,也就是这段代码要放在什么位置才合适。

方式1 :将定义结构体的代码放在主函数前

#include


typedef struct book
{
  int id;
  char name[20];
  char type[20];
}book;

int main()
{
}
  • 我们可以这样理解,如果我们想要在主函数内使用结构体,那么我们在使用前一定要定义它,因为没有定义便不存在,不存在便无法使用。
  • 而程序的编译是自上而下进行的,因此定义结构体代码的位置要放在主函数前,否则就会报错。
  • 也就是说,在该结构体定义下面的所有代码与函数都可以使用该结构体,不止是主函数。

方式2 :将定义结构体的代码放在主函数内部

#include
 
int main()
{
  typedef struct book
  {
    int id;
    char name[20];
    char type[20];
  }book;
}
  • 这个时候,该结构体只有在主函数内,并且位于定义该结构体代码下方的的代码才能使用。
  • 而位于主函数外,或主函数内但位于定义结构体代码上方的代码是无法使用的。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4148

    浏览量

    61558
  • 代码
    +关注

    关注

    30

    文章

    4603

    浏览量

    67371
  • 变量
    +关注

    关注

    0

    文章

    599

    浏览量

    28179
  • 结构体
    +关注

    关注

    1

    文章

    126

    浏览量

    10774
收藏 人收藏

    评论

    相关推荐

    变量声明定义有什么区别和联系

    变量声明定义是编程中的两个重要概念,它们在语法和语义上有一些区别和联系。在本文中,我将详细介绍变量声明
    的头像 发表于 12-07 16:14 597次阅读

    在头文件中加入外部结构变量声明后报错

    最近在整文件系统,但是在头文件中加入外部结构变量声明如extern FATFS *fs[2]就会提示结构
    发表于 10-11 08:55

    【干货】c语言基础语法——结构

    地方定义结构设计,而在其他地方定义实际的结构变量
    发表于 06-03 17:10

    单片机C语言 -- 基于结构的面向对象编程技巧

    :系统初始化后,进入主循环,通过结构调用system文件的函数。2、结构类型定义定义1个
    发表于 02-04 21:48

    定义头文件中的结构变量总是赋值无效的原因?

    定义了一个头文件,里面包含一个结构,#ifndef Parameterdef#define Parameterdef#endif//Global parameters and variables
    发表于 07-20 14:10

    请问结构数组怎么声明

    试试typedefstruct node{ int date; int next;}linklist;话说哪位老司机解释下,结构数组怎么声明
    发表于 07-30 11:42

    GPIO结构定义

    #include "stm32f4xx.h"#include "usart.h"void My_USART1_Init(void){//GPIO结构定义 GPIO_InitTypeDefGPIO_InitStructure;/
    发表于 08-04 07:47

    结构类型定义的一般格式

    它是将若干个不同类型的数据变量有序地组合在一起而形成的一种数据集合体。一般来说,结构中各个变量之间是存在某些联系的,例如时间的时分秒,日
    发表于 12-08 07:13

    结构变量定义与使用变量访问结构成员

    知识点回顾关于找最大公共子串的两种解题方法结构定义(3种)结构变量
    发表于 12-17 07:10

    KIEL MDK关于头文件声明包含结构变量函数出现错误问题

    ​ 今天遇到的一个问题:我在一个头文件声明了一个结构:然后再另一个函数写了一个函数并在.h里面声明:编译出现了以下错误:大概的意思是说我这个结构
    发表于 04-18 11:36

    求助,结构变量定义引用问题求解

    |= mask; } 如以上语句,GPIO_Type是个结构定义定义了一个*base变量,在引用其中的成员时,是base->I
    发表于 10-27 06:06

    变量定义声明的区别

    我们在程序设计中,时时刻刻都用到变量定义变量声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:
    发表于 11-17 08:38 1w次阅读

    C语言中变量声明定义以及extern的用法介绍

    变量声明不同于变量定义,这一点往往容易让人混淆。 l变量声明是告诉编译器,该
    发表于 11-21 10:59 12次下载

    C语言之结构体的声明定义

    我们刚刚申请了一个名叫Info的结构体类型,那么理论上我们可以像声明其他变量的操作一样,去声明我们的结构体操作,但是C语言中规定,
    的头像 发表于 07-09 09:06 7104次阅读
    C语言之<b class='flag-5'>结构</b>体的<b class='flag-5'>声明</b>与<b class='flag-5'>定义</b>

    C语言如何定义结构体类型变量

    定义结构变量后,系统会为之分配内存单元。根据结构体类型中包含的成员情况,在Visual C++中占63个字节。 * 这种声明方式是
    的头像 发表于 03-10 15:35 971次阅读