C结构体声明,定义,初始化(赋值),访问

#include
//结构是一些值的集合,这些值成为成员变量,结构的每个成员可以是不同类型的变量

//标准结构体
struct Stu//这个Stu是结构体名
{
    //这些是成员变量
    char name[20];
    int age;
    char id[20];
}//这些叫变量列表,可以在这里创建结构体变量,这个是全局变量,即声明的同时定义变量
//赋值存在两种情况,按顺序赋值是s2,不按顺序赋值是s3
s1,s2 = { "zhangsan",23,"111" }, s3 = {.name="李四",.id="112",.age=24},s4;

struct Stu s1; //定义结构体变量s1


//匿名结构体
struct //这里却没有名字
{
    //这些是成员变量
    char id[20];
    int age;
    char name[20];
}s5;//因为没有名字,所以不能像标准结构体一样随便创建结构体变量
    //只能在变量列表的位置,直接创建结构体变量


//结构体的自引用
//注意结构体自引用的时候,不要用匿名结构体,可以避免代码错误
struct Node
{
    int data;//数据域
    struct Node* next;//指针域
};

//typedef 类型 别名;
/*
类型=struct Npde1
    {
        int data;
        struct Node1* next;
    }

别名=Node1
*/
typedef struct Npde1
{
    int data;
    struct Node1* next;
} Node1;

//结构体嵌套
struct SN
{
    char c;
    int i;
}sn1 = { 'q',100 }, sn2 = {.i=200,.c='w'};

struct S
{
    double d;
    struct SN sn;
    int arr[10];
};

int main() 
{
//在声明的时候已经赋值了,在这可以直接使用
    printf("s2.name=%s s3.id=%s\n", s2.name, s3.id);

// 创建标准结构体变量
// struct 结构体名 变量列表名
   struct Stu s4;//这个是局部变量
//赋值是这样的
   s4.age = 22;
//使用是这样的
   printf("s4.age=%d\n",s4.age);

//匿名结构体的使用
s5.age = 21;
printf("s5.age=%d\n",s5.age);

//这里为了方便橙色部分的使用我就不详细的写了

//这是嵌套结构体的赋值,跟数组一样也用{}
   struct S s = { 3.14, {'a',99},{1,2,3} };
//嵌套结构体的使用
   printf("%lf %c %d\n", s.d, s.sn.c, s.sn.i);

    return 0;
}

你可能感兴趣的:(c语言,开发语言)