永利皇宫官网网址

凌阳教育专注嵌入式教育14年,良心教育,有担当,有诚信,值得信赖的教育品牌,欢迎访问官网http://www.sunplusedu.com

声明结构体变量

上一篇 / 下一篇  2016-04-29 16:29:00

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

(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


TAG: 结构体

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar