当前位置: 首页 > news >正文

哈尔滨企业网站东营网站建设制作

哈尔滨企业网站,东营网站建设制作,高权重域名做网站,公司的网站怎么建设C语言 文章目录 C语言前言一、什么是结构体二、什么是联合体三、结构体和联合体的区别 前言 一、什么是结构体 在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数…

C语言

文章目录

  • C语言
  • 前言
  • 一、什么是结构体
  • 二、什么是联合体
  • 三、结构体和联合体的区别


前言

在这里插入图片描述

一、什么是结构体

在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。也就是说,结构体是由多种元素所构成的数据结构。

struct 结构体
{    任意类型 任意变量; 任意类型 任意变量;    ……}

注意:这不是定义变量,而是自定义一种类型而已。如:

struct student
{
char name[10];//学生姓名
int height;//学生身高
bool sex;//学生性别 假设0表示女,1表示男。
}

类型定义好以后,则可以定义该类型的变量

struct student a,b;// struct可以省略。
可以在定义结构体变量的时候赋值。如
student a={”q”,172,1,b={“x”,172,1};

也可以在定义结构体变量以后赋值,但注意不能再用{}。如:

student a,b;a={”q”,172,1,b={“x”,172,1};//这是错误的。

应该是

a.name="q";
a.height=172;
a.sex=1;

可以在定义结构体类型的时候同时定义结构体变量并赋值。

struct student
{  
char name[10];//学生姓名  
int height;//学生身高  
bool sex;//学生性别 假设0表示女,1表示男。
} a="q",172,1,b={"x",172,1};

访问结构体成员要用直接成员运算符“.”或间接成员运算符“->”。

对于结构体变量,访问其中的成员采取“结构体变量.成员”的形式;而对于结构体指针,访问它所指向的结构体变量中的成员,则采取“结构体指针->成员”形式。

#include <stdio.h>// 定义一个结构体类型
typedef struct {int age;float height;
} Person;int main() {// 定义一个结构体变量Person person1;// 定义一个结构体指针Person *person2;// 为结构体变量赋值person1.age = 25;person1.height = 175.5;// 为结构体指针分配内存并赋值person2 = (Person *)malloc(sizeof(Person));if (person2 == NULL) {printf("Memory allocation failed\n");return 1;}person2->age = 30;person2->height = 180.0;// 通过结构体变量访问成员printf("Person1 Age: %d\n", person1.age);printf("Person1 Height: %.2f\n", person1.height);// 通过结构体指针访问成员printf("Person2 Age: %d\n", person2->age);printf("Person2 Height: %.2f\n", person2->height);// 释放分配的内存free(person2);return 0;
}

二、什么是联合体

联合体也是一种自定义的复合类型,它可以包含多个不同类型的变量。这些变量在内存当中共用一段空间。这段空间的size就是各变量中size最大的那个变量。

union myunion
{int num1;  double num2;  float num3;};

定义了一个联合体类型myunion。
myunion a,b;//定义了两个myunion型变量。也可以在定义联合体类型的时候定义联合体变量。如:

union myunion
{  
int num1; 
double num2; 
float num3;}a,b;

a占用的空间有多大呢?Sizeof(a)结果为8,即myunion占用8个字节,和double型变量相同。
注意:任一时刻,只能访问结构体里面的一个变量。

联合体(Union)与结构体相似,但它们的区别在于联合体中只能同时存储一个成员的值。这些成员共享同一个物理存储空间,也就是说,一个联合体的大小,等于它最大的成员变量所占据的空间。

#include <stdio.h>// 定义一个联合体类型
typedef union {int i;float f;char c;
} Data;int main() {// 创建一个联合体变量Data data;// 向联合体的 int 成员赋值data.i = 10;printf("Data.i = %d\n", data.i);// 向联合体的 float 成员赋值data.f = 3.14;// 注意,这会覆盖之前存储在 i 中的值printf("Data.f = %.2f\n", data.f);// 向联合体的 char 成员赋值data.c = 'A';// 注意,这会覆盖之前存储在 f 中的值printf("Data.c = %c\n", data.c);// 打印联合体的大小printf("Size of union Data = %zu bytes\n", sizeof(data));return 0;
}

在这里插入图片描述

三、结构体和联合体的区别

1.结构体与联合体虽然都是由多个不同的数据类型成员组成的,但不同之处在于联合体中所有成员共用一块地址空间,即联合体只存放了一个被选中的成员,而结构体中所有成员占用空间是累加的,其所有成员都存在,不同成员会存放在不同的地址。在计算一个结构型变量的总长度时,其内存空间大小等于所有成员长度之和(需要考虑字节对齐),而在联合体中,所有成员不能同时占用内存空间,它们不能同时存在,所以一个联合型变量的长度等于其最长的成员的长度。
2.对于联合体的不同成员赋值,将会对它的其他成员重写,原来成员的值就不存在了,而对结构体的不同成员赋值是互不影响的。

http://www.tj-hxxt.cn/news/95463.html

相关文章:

  • 青海企业网站制作精准引流的网络推广方法
  • 广 做网站蓝光电影下载50篇经典软文100字
  • 如何创建一个网站用来存放东西seo比较好的优化方法
  • 网站建设支付百度通用网址
  • 家在深圳坂田业主论坛东莞优化排名公司
  • 国外常用视频网站tenor怎么设置网络营销推广外包服务
  • 应持续抓好二级网站的建设工作武汉今日新闻头条
  • 免费的微网站制作torrentkitty搜索引擎
  • 作品集公司网站windows优化软件
  • 单位门户网站建设的请示如何做seo整站优化
  • 手机怎么提升网站流量nba排行榜最新排名
  • 数据库网站建设百度指数的主要用户是
  • 有什么做日结兼职的网站百度指数平台
  • 岳阳公司网站开发网络推广服务合同
  • 河北省建设机械协会网站是真的吗小广告怎么能弄干净
  • 网站商城维护怎么做竞价推广论坛
  • 西安专业网站建设服务好优化网站seo公司
  • 传销公司做网站运营seo的工作内容主要包括
  • seo实战培训费用石家庄seo代理商
  • 做一个公司官网怎么做seo咨询价格找推推蛙
  • DW怎么做招聘网站优化提升
  • 注册做网站的营业执照哪些浏览器可以看禁止访问的网站
  • 网页翻译为中文优化大师怎么样
  • 中国网站今日国内新闻摘抄十条
  • iis的默认网站没有自动启动最新百度关键词排名
  • 成都学网站建设费用大连seo
  • 网站内部链接导向网站服务费一年多少钱
  • 电子商务网站建设和管理的含义表白网站制作
  • 织梦网站根目录标签珠海网络推广公司
  • 怀化优化办seo排名工具外包