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又是什么情况呢?
展开
 我来答
吉祥二进制
高粉答主

2015-05-22 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84579

向TA提问 私信TA
展开全部

  首先,定义一个结构的一般形式为:

  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类型。

unniversky
2010-04-18 · 超过11用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:20.3万
展开全部
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;而已
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c883bdc32
2010-04-18
知道答主
回答量:48
采纳率:0%
帮助的人:0
展开全部
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;

这只是声明了一个结构体复合类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式