结构体
//申明一个结构体
struct book
{
char name[MAXTITL];
char tel[MAXAUTL];
};//注意分号不能少,这也相当于一条语句;
此时并没有创建一个实际的数据对象,而是描述了一个组成这类对象的元素。
因此,我们也有时候将结构体声明叫做模板,因为它勾勒出数据该如何存储,并没有实例化数据对象。
结构体函数参数
传递方式有两种:值传递、地址传递, 如果不行修改主函数中的数据,用值传递,反之用地址传递。
传指针时效率更高,可以修改指针所指向的结构体。
typedef是为一种数据类型(基本类型或自定义数据类型)定义一个新名字,不能创建新类型。
与#define不同,typedef仅限于数据类型,而不是能是表达式或具体的值
#define发生在预处理,typedef发生在编译阶段
同一类型的结构体可以相互赋值:
struct stu//定义结构体类型名 stu;
{
char name[20];
int num;
float fen;
};
int main()
{
stu s={"wang",1,30.54,},s1;
s1=s;
printf("%d",s1.num);
C的结构体内不允许有函数存在,C++允许有内部成员函数(就是上面提到的结构体里面允许有函数),且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。
当结构体自引用的时候,不可写成匿名结构体类型。