首页 > 结构体定义容易混淆的地方

结构体定义容易混淆的地方

第一种:

struct Student

{

   ...

   ...

};

     Student为结构体名,相当于一种数据类型。可以和int、char等一样的用法。

     a.   这种形式用在C语言中,要声明该结构体类型的对象,应该写为struct Student  stud1;

     b.   这种形式用在C++语言中,要声明其对象,直接写Student  stud1;

第二种:

typedef struct Student

{

   ...

   ...

}Stu;    //Stu是一种数据类型

等同于:

typedef struct

{

   ...

   ...

}Stu;  //Stu是一种数据类型

       Stu是名为Student的结构体这一数据类型的别名,c/c++中声明该类型的变量时都为Stu stud1;

       可以看出,第二种方式在c++语言中并没有多大意义,两种方式定义的结构体在声明对象时并无繁简区分,但在c中却是简化了结构体类型的变量的声明,不用每次都写关键字struct。

另外区别于第二种方式有如下写法容易混淆:

struct Student

{

   ...

   ...

}stu1;   //stu1是一个变量

       这种方式在定义结构体的同时声明了该结构体类型的变量。



转载于:https://www.cnblogs.com/lulululu/p/3693875.html

更多相关:

  • Python 与 ABC 的一个重要区别在于其类型系统。ABC 采用静态类型,编译器会检查程序中的变量类型是否保持一致,如果不一致,程序就无法运行。并且,ABC与当时大多数静态语言不同,采用的是类型推导(和 Haskell 一样),而不是类型声明(比如 C 语言)。而 Python 采用动态类型,所有类型检查都是在程序运行过程中,而不...

  • python是计算机二级考试的科目之一,并没有级别的划分。其考试目标是测试考生掌握Python语言知识的程度和对Python语言的编程能力、调试能力和综合应用能力,在当下的应用中是十分重要的。 什么是python Python语言是一种解释运行、面向对象、扩展性强的程序设计语言,是大学生学习计算机编程能力、理解计算机解决问题的方法的...

  • 正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1)空指针所对应的是指指向的对象为空的指针。            不经发问,什么叫指向为空呢?要理解这点,必须理解如下几点(有点啰嗦,但...

  • 一、reponseType 1、什么是reponseType XMLHttpRequest.reponseType属性是一个枚举类型的属性,返回响应数据的类型,他允许我们手动的设置 返回数据的类型。如果我们将它设置为一个空字符串,它将默认的使用"text"类型。 当将reponseType设置为一个特定的类型的时候需要确保服务...

  • SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。INTEGER一个变量虽然定义为整型,但也有多种形式。有些整型变量没有范围限制,有些整型变量定义为特定的数值(例如,IP的转发标志就只有允许转发时的或者不允许转发时的这两种),有些整型变量定义一个特定的范围(例如,UDP和TCP的端口号...

  • 一.  结构的基本知识 聚合数据类型能够存储多个数据,C语言提供了两种类型的聚合数据类型,数组和结构。数组是相同的数据,结构是不同类型的数据聚合。结构也是一些值得集合,这些值成为它的成员,每个结构都有它的名字,他们是通过名字来访问的。 1.      结构声明 在结构声明时,必须列出它包含的所有成员,这个列表包括每个成员的类型和...

  •   在前面认识C中的结构体中我介绍了结构体的基础知识,下面通过这段代码来回顾一下: 1 #include 2 #define LEN 20 3 4 struct Student{ //定义结构体 5 char name[LEN]; 6 char address[...

  • Hibernate 配置参数hibernate.hbm2ddl.auto  Hibernate中的配置文件:              参数说明:   valid...

  • 一、一对多 以班级Classes和学生Student为例: 回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据SELECT c.*,s.* FROM classes c,student s WHERE s.cid=c.cid;SELECT c.cname,s.sname FROM classes c INNER...

  • 一、 Hibernate介绍     Hibernate是基于对象/关系映射(ORM,Object/Relational Mapping)的一个解决方案。ORM方案的思想是将对象模型表示的对象映射到关系型数据库中,或者反之。Hibernate目前是ORM思想在Java中最成功、最强大的实现。它于2001年的年末发布第一个版本,立即引...