C语言结构体

 

结构体的声明:

struct 结构名
{
类型 变量名;
类型 变量名;
...
} ;

结构体的定义:

1. struct  结构体名   结构变量名        // 这种结构体定义用于同一结构体不同对象的情况。

struct  name  xiaoming;
struct  name  xiaohong;

2.

// 多用于函数形参声明,或只有一个结构体变量
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;

3. 匿名结构体定义:

// 匿名结构体(没有结构名),它只能使用一次,用过一次就不能再用了
struct 
{
类型 变量名;
类型 变量名;
...
} 结构变量;
// 结构体重命名, node ==  struct tag
typedef struct tag{
  int num; 
  char name;
  }node;

int main()
{
  struct tag n1;
        node n2;
 return 0;
}
//
typedef struct {
  int num; 
  char name;
  }node;

node n2;

 

结构体初始化:

// 定义时初始化
struct student{     
char name[20];      
char sex;  
int num;         
}x={"zhangsan",'m',1234};

/************************/ 

struct student{     
char name[20];  
char sex;      
int num;         
};
struct student s={"zhangsan",'m'}
// 定义后初始化
struct student{     
char name[20];  
char sex;      
int num;    
}stu;
int main()
{
stu.name="zhangsan";
stu.sex='m';
stu.num=1234;return 0;
}

/*************************/ 
struct student *stu1;
stu->name="zhangsan";
stu->sex='m';
stu->num=1234;

 

结构体自引用:

/******** error ******/
struct tag_1{
  struct tag_1 A; 
  int value;
  };

/******** success******/
struct tag_1{
  struct tag_1 * A; 
  int value;
  };

 

extern 引用结构体:

typedef struct {
  int num; 
  char name;
  }node;

node n1;    // 定义n1结构体变量

extern   node n1// 引用n1

/****************/
struct node {
  int num; 
  char name;
  }node;
struct node n1;    // 定义n1结构体变量

extern struct  node n1    // 引用n1    

 

 

posted @ 2023-03-25 22:17  嵌入式小白—  阅读(81)  评论(0编辑  收藏  举报