• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

C语言中结构体struct类型的用法(一)

  1. C语言允许用户自己建立由不同数据类型组成的组合型的数据结构,称为结构体。
    声明一个结构体类型:
struct Student
{int num;
 char name[20];
 char sex;
};

成员也可以属于另外一个结构体类型。

struct Date
{ int month;
  int day;
  int year;
};
struct Student
{int num;
 char name[20];
 char sex;
 struct Date birthday;
};

1.1 先声明结构体类型,再定义该类型的变量
struct Student student1, student2;

1.2 在声明类型的同时定义变量(不建议使用)

struct Student
{int num;
 char name[20];
 char sex;
} student1, student2;

1.3 不指定类型名而直接定义结构体类型变量(用的少)

struct
{int num;
 char name[20];
 char sex;
} student1, student2;

说明:
1.在编译时,对类型是不分配空间的,只对变量分配空间;
2.结构体类型中的成员名可以与程序中的变量名相同;
3.对结构体变量中的成员即域可以单独使用,相当于普通变量。

2 结构体变量的初始化和引用

#include <stdio.h>
int main()
{struct Student
   {long int num;
    char name[20];
    char sex;
    char addr[20];
    } a = {10101, "Li Lei", ‘M’,"Beijing Road"};//定义结构体变量并且初始化
  printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n", a.num, a.name, a.sex, a.addr);
  return 0;
}

2.1 在定义结构体变量时可以对它的成员初始化;
2.2 C99标准允许对某一成员初始化,例如:
struct Student b={.name="zhang fang"}
.name隐含代表结构体变量b中的成员b.name,其他未被指定初始化的数值型成员被系统初始化为0,字符型成员被系统初始化为‘\0’,指针型成员被系统初始化为NULL。
引用结构体变量中的成员的值student1.num=1000;
.是成员运算符,它在所有的运算符中的优先级最高,因此可以把student1.num作为一个整体。
不能企图输出结构体变量名来达到输出结构体变量所有成员的值。
printf("%s\n",student1);//这种表达不正确
2.3 如果成员本身又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低的一级地成员。
student1.birthday.month
2.4 对结构体变量的成员可以像普通变量进行运算。
student2.score=student1.score;
sum=student1.score+student2.score;
2.5 同类的结构体变量可以互相赋值。
student1=student2;
2.6 可以引用结构体变量成员的地址,也可以引用结构体变量的地址。

scanf("%d", &stuent1.num);//输入&student1.num的值
printf("%o", &student1);//输出结构体变量&student1的首地址

但不能用以下语句整体读入结构体变量,例如:

scanf("%d,%s,%c,%d,%f,%s\n",&student1);
  1. 使用结构体数组
    2.1 定义结构体数组一般形式是
    struct 结构体名
    {成员表列} 数组名[数据长度];
    2.2 先声明一个结构体类型,然后再用此类型定义结构体数组:
    结构体类型 数据名[数组长度];
    struct Person leader[3];
    2.3 对结构体数组初始化的形式是在定义数组的后面加上:
    ={初值表列};
    struct Person leader[3]={"li",0,"zhang",0,"sun",0};

posted on 2022-11-20 15:14  SOC验证工程师  阅读(543)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3