c语言如何定义结构体变量
我看到陈老师的书上定义结构体是这样的structstudent{longintnum;charname[20];charsex;};structstudentstu[3]...
我看到陈老师的书上定义结构体是这样的
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 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 stu
{
int 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类型。
展开全部
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;而已
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;而已
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
这只是声明了一个结构体复合类型。
{
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;
这只是声明了一个结构体复合类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询