2022.9.14实训笔记

44 阅读1分钟

结构体

//申明一个结构体 
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指针的。

当结构体自引用的时候,不可写成匿名结构体类型。