凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

声明结构体变量

已有 474 次阅读| 2016-4-29 16:29

定义了结构体格式后,就可以声明这种类型的变量了。结构体变量的声明类似于其他数据类型变量的声明。结构体变量的声明包括以下部分:

(1)       关键词struct

(2)       结构体标记符

(3)       由逗号分隔开的变量名列表。

(4)       终止分号。

例如,语句struct book_bank,book1,book2,book3;

就是将book1book2book3声明为struct_book类型的变量。

每个变量具有由模板指定的4个成员。完整的声明如下所示:

struct book_bank

{

       char title[20];

       char author[15];

       int pages;

       float price;

}

struct book_bank,book1,book2,book3;

记住,结构体的成员本身不是变量,它们不占用任何存储空间,除非它们与诸如book1之类的结构体变量相关联。当编译器遇到声明语句时,将为结构变量保留存储空间。也可以将结构体定义与变量声明组合在一条语句之中。

声明语句:

struct book_bank

{

       char title[20];

       char author[15];

       int pages;

       float price;

}book1,book2,book3;

book1.book2book3声明为表示3本书的结构体变量,没有包含标记符名。但是并不推荐使用这种方法,原因有两条:

(1)       由于没有标记符名,就不能再用它来声明其他变量了。

(2)       通常,结构体定义是出现在程序文件的开头,位于所有变量或函数定义之前。也可以出现在main和诸如#define之类的宏定义之前。在这些情况下,结构体定义时全局的,可以被其他函数使用。

定义结构体类型

也可以使用关键词typedef来定义结构体。例如:

typedef struct

{

       ......

       type member1;

       type member2;

       ......

}type_name;

type_name表示相关的结构体定义。因此,就可以用它来如下声明变量了:

type_name variable1,variable2,......

记住,(atype_name是类型名,不是变量名;(b)不能用typedef声明来定义变量。

访问结构体成员

它们必须与结构体变量相链接,以便使用它们的成员。例如,title没有明确的定义,而“title of books”则有。成员与变量之间的链接可以使用成员运算符‘.’来建立,该运算符又称为“点运算符”或“句运算符”。例如:

book1.price

是表示book1的定义的变量,它可以像其他普通的变量一样处理。下面来看看如何为book1的成员赋值:

strcpy(book1.title,"BASIC");

strcpy(book1.author,"Balagurusamy");

book1.pages=250;

book1.price=120.50

也可以使用scanf从键盘赋值,下面是合法的输入语句:

scanf("%s\n",book1.title);

scanf("%d\n",&book1.pages);

请定义一个结构体类型struct personal,可包含人名、参加工作日期以及工资。请编写一个程序,从键盘读取每个人的这些信息,并将这些信息显示在屏幕上。

struct personal

{

       char name[20];

       int day;

       char month[10];

       int year;

       float salary;

}

main()

{

       struct personal person;

       printf("Input Values\n");

       scanf("%s %d %s %d %f",

              person.name,

              &person.day,

              person.month,

              &person.year,

              &person.salary);

       printf("%s %d %s %d %f\n")

              person.name,

              person.day,

              person.month,

              person.year,

              person.salary);      

}

凌阳教育,全国唯一一家原厂式嵌入式培训机构,专业从事嵌入式人才培训13年,最近新开课程信息安全工程师培训,想了解更多嵌入式资料下载或者是凌阳教育的动态,请访问凌阳教育官网www.sunplusedu.com


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 23:52 , Processed in 0.014108 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部