【C语言】结构体

xiaoxiao2021-02-28  45



 

 

 

struct 类型名    自定义数据类型,定义完成以后,等同于内置类型

 

 

1.结构体不能定义一个包含自身的普通成员,但可以定义一个指向自身的指针

 

 

 

struct A { int a; char b; struct A c;//error 结构体不能定义一个自身的普通成员变量 struct A *p;//ok 结构体可以定义一个指向自己的指针 //链表 };

 

 

 

 

2.     结构体普通变量通过“.”号访问它的成员        结构体指针变量通过“->”号访问它的成员        有两个自带*(解引用)的符号“->,[ ]”

 

 

 

#include <stdio.h> #include <string.h> struct Student { char name[20]; int age; }; void Show(struct Student stu) { printf("%s,%d\n",stu.name,stu.age); stu.age = 0; //修改失败,因为不满足1.传指针 2.解引用 } void Show1(struct Student *pstu) { printf("%s,%d\n",pstu->name,pstu->age); pstu->age = 0; //修改成功值为0,子函数想要修改父函数的值必须满足1.传指针 2.解引用,成立 //为了避免修改,可以在struct前面加const,屏蔽pstu->age = 0 } int main() { struct Student stu1; struct Student stu2 = {"liubei",25}; struct Student stu3 = {"caocao"};//0,聚合类型只初始化一部分则剩余部分为0 stu3.age = 30; //stu3.name = "sunquan";//error //字符串不能直接赋值! strcpy(stu3.name,"sunquan"); //ok struct Student *pstu = &stu2; //int *p = &a; //(*pstu).age = 35; pstu->age = 35; strcpy(pstu->name,"zhangfei"); Show(stu2); Show(stu2); Show1(&stu2); Show1(&stu2); //值为0,子函数想要修改父函数的值必须满足1.传指针 2.解引用 return 0; }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

typedef  数据类型   新数据类型

 

 

 

 

去掉typedef,查看定义的类型变量,然后加上typedef就由该类型的变量提升为该类型

 

typedef int Arr[10]; //定义了整型数组类型 int main() { int a[10]; //定义了整型数组变量 int b[10]; a[5] = 10; b[3] = 30; printf("%d\n",sizeof(a)); //40 printf("%d\n",sizeof(b)); //40 }

 

转载请注明原文地址: https://www.6miu.com/read-2627876.html

最新回复(0)