在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2737|回复: 0

[资料] 声明结构体变量

[复制链接]
发表于 2016-4-29 16:56:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

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

(1)
关键词struct

(2)
结构体标记符

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

(4)
终止分号。

例如,语句structbook_bank,book1,book2,book3;

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

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

struct book_bank

{

       chartitle[20];

       charauthor[15];

       intpages;

       floatprice;

}

struct book_bank,book1,book2,book3;

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

声明语句:

struct book_bank

{

       chartitle[20];

       charauthor[15];

       intpages;

       floatprice;

}book1,book2,book3;

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

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

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

定义结构体类型

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

typedef struct

{

       ......

       typemember1;

       typemember2;

       ......

}type_name;

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

type_name variable1,variable2,......

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

访问结构体成员

它们必须与结构体变量相链接,以便使用它们的成员。例如,title没有明确的定义,而“titleof 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);

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

struct personal

{

       charname[20];

       intday;

       charmonth[10];

       intyear;

       floatsalary;

}

main()

{

       structpersonal person;

       printf("InputValues\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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 00:07 , Processed in 0.015053 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表