c语言如何定义结构体变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如何定义结构体变量相关的知识,希望对你有一定的参考价值。
我看到陈老师的书上定义结构体是这样的
struct student
long int num;
char name[20];
char sex;
;
struct student stu[3];
这里student是一个结构体类型名,我们再用student去定义一个student类型的结构体数组stu[3],或者一个变量,这样应该是可以的,这里的student就变为了普通类型的Int,char之类的变量类型,是吧?
但我在另外的例子上看到了这种形式:
typedef struct bmp_picture_typ
bitmapfile file;
bitmapinfo info;
bmp_picture,*bmp_picture_ptr;
这里bmp_picture,*bmp_picture_ptr究竟是变量还是变量类型的名字呢?因为前面有typedef。如果是没有typedef又是什么情况呢?
首先,定义一个结构的一般形式为:
struct结构名//成员表列
;
成员表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符 成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct stuint num;
char name[20];
char sex;
float score;
;
在这个结构定义中,结构名为stu,该结构由4个成员组成。 第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。 应注意在括号后的分号是必不可少的。
然后,当结构定义完成后,即创建了一种数据类型,可以像int、float等内置类型一样使用,以上面定义的stu结构体来和int类型对比着看。
int a;//定义一个int类型的变量a
stu a; //定义一个stu类型的变量a
int *p; //定义一个int类型的指针p
stu *p; //定义一个stu类型的指针p
int a[10];//定义一个int类型的数组a,它有10个元素,每个元素是int类型
stu a[10];//定义一个stu类型的数组a,它有10个元素,每个元素是stu类型。
参考技术A typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性,例如typedef int am;这里am形式就代表整型int,同样在你的例子中:typedef+
struct bmp_picture_typ
bitmapfile file;
bitmapinfo info;
+bmp_picture
是将结构体类型bmp_picture_typ用bmp_picture形式来代替,来隐藏笨拙的语法构造,之后是“,*bmp_picture_ptr”,注意前面有个逗号,说明与bmp_picture同等地位,不过多了个*,说明bmp_picture_ptr是表示bmp_picture_typ指针类型的形式,就像typedef int* bm,即用bm形式表示int*,而这里的形式只是将两者合并为typedef int am,*bm;而已本回答被提问者采纳 参考技术B typedef struct bmp_picture_typ
bitmapfile file;
bitmapinfo info;
bmp_picture,*bmp_picture_ptr;
等价于:
typedef struct bmp_picture_typ
bitmapfile file;
bitmapinfo info;
bmp_picture;
typedef struct bmp_picture_typ
bitmapfile file;
bitmapinfo info;
*bmp_picture_ptr;
这只是声明了一个结构体复合类型。
以上是关于c语言如何定义结构体变量的主要内容,如果未能解决你的问题,请参考以下文章