C中的结构

结构是C语言中可用的用户定义数据类型, 它允许组合不同种类的数据项。结构用于表示记录。

定义结构:

要定义结构, 你必须使用struct声明。 struct语句定义一种新的数据类型, 该数据类型具有一个以上或等于一个成员。 struct语句的格式如下:

struct [structure name]

{

member definition;

member definition;

...

member definition;

};

联合

联合是C语言中可用的特殊数据类型, 它允许在同一内存位置存储不同的数据类型。你可以定义具有多个成员的联合, 但是在任何给定时间只能有一个成员包含一个值。联合提供了一种有效的方式, 可以将同一内存位置用于多种用途。

定义联合:

要定义联合, 你必须使用union

语句的定义方式与定义结构时相同。 union语句为你的程序定义了一个新数据类型, 该数据类型具有多个成员。联合声明的格式如下:

union [union name]

{

member definition;

member definition;

...

member definition;

};

结构与联合之间的相似之处

两者都是用户定义的数据类型, 用于将不同类型的数据存储为一个单元。

它们的成员可以是任何类型的对象, 包括其他结构和联合或数组。成员也可以包含一个位字段。

结构和联合都仅支持赋值=和sizeof运算符。分配中的两个结构或联合必须具有相同的成员和成员类型。

结构或联合可以按值传递给函数, 并按值按函数返回。参数必须与函数参数具有相同的类型。结构或联合通过值传递, 就像标量变量作为相应参数一样。

‘。’运算符用于访问成员。

差异性

//C program to illustrate differences

//between structure and Union

#include

#include

//declaring structure

struct struct_example

{

int integer;

float decimal;

char name[20];

};

//declaraing union

union union_example

{

int integer;

float decimal;

char name[20];

};

void main()

{

//creating variable for structure

//and initializing values difference

//six

struct struct_example s={18, 38, "srcmini" };

//creating variable for union

//and initializing values

union union_example u={18, 38, "srcmini" };

printf ( "structure data:\n integer: %d\n"

"decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

printf ( "\nunion data:\n integeer: %d\n"

"decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

//difference two and three

printf ( "\nsizeof structure : %d\n" , sizeof (s));

printf ( "sizeof union : %d\n" , sizeof (u));

//difference five

printf ( "\n Accessing all members at a time:" );

s.integer = 183;

s.decimal = 90;

strcpy (s.name, "srcmini" );

printf ( "structure data:\n integer: %d\n "

"decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

u.integer = 183;

u.decimal = 90;

strcpy (u.name, "srcmini" );

printf ( "\nunion data:\n integeer: %d\n "

"decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

printf ( "\n Accessing one member at time:" );

printf ( "\nstructure data:" );

s.integer = 240;

printf ( "\ninteger: %d" , s.integer);

s.decimal = 120;

printf ( "\ndecimal: %f" , s.decimal);

strcpy (s.name, "C programming" );

printf ( "\nname: %s\n" , s.name);

printf ( "\n union data:" );

u.integer = 240;

printf ( "\ninteger: %d" , u.integer);

u.decimal = 120;

printf ( "\ndecimal: %f" , u.decimal);

strcpy (u.name, "C programming" );

printf ( "\nname: %s\n" , u.name);

//difference four

printf ( "\nAltering a member value:\n" );

s.integer = 1218;

printf ( "structure data:\n integer: %d\n "

" decimal: %.2f\n name: %s\n" , s.integer, s.decimal, s.name);

u.integer = 1218;

printf ( "union data:\n integer: %d\n"

" decimal: %.2f\n name: %s\n" , u.integer, u.decimal, u.name);

}

输出如下:

structure data:

integer: 18

decimal: 38.00

name: srcmini

union data:

integeer: 18

decimal: 0.00

name: ?

sizeof structure: 28

sizeof union: 20

Accessing all members at a time: structure data:

integer: 183

decimal: 90.00

name: srcmini

union data:

integeer: 1801807207

decimal: 277322871721159510000000000.00

name: srcmini

Accessing one member at a time:

structure data:

integer: 240

decimal: 120.000000

name: C programming

union data:

integer: 240

decimal: 120.000000

name: C programming

Altering a member value:

structure data:

integer: 1218

decimal: 120.00

name: C programming

union data:

integer: 1218

decimal: 0.00

name: ?

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

c语言标量变量是什么,C语言中的结构和联合之间的区别相关推荐

  1. 标量变量 c语言,标量变量

    标量变量是指只能存放单个数值的变量.当编写pl/sql程序时,最常用的变量就是标量变量.当定义标量变量时,必须要指定标量数据类型.标量数据类型包括数字类型.字符类型.日期类型和布尔类型,每种类型又包含 ...

  2. C语言*在变量前 **p,C语言之指针*p++和*(p++)区别

    在C语言的指针运算中,经常会碰到以下用法:*++p.++*p.(*p)++.*(p++),在解决问题前,先了解一下基础: 1. * 号和 ++ 符号属于同级运算,且优先运算顺序是从右到左. 2.a++ ...

  3. c语言环境变量的作用,C语言程序的环境变量

    环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path ...

  4. c语言define变量字符串拼接,C语言#define的用法

    C语言#define的用法 例如:如果x是一个宏参量,那么#x可以把参数名转化为相应的字符串.该过程称为字符串化. #include #define PSQR(x) printf ("The ...

  5. c语言各种变量的优缺点,C语言优缺点

    C语言优缺点 C语言跟别的语言比是最基础的,学单片机就是要先好C语言,以下是关于C语言优缺点,欢迎阅读! 1. 简洁紧凑.灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小 ...

  6. C语言学习之字符串,字符,字节,结构和联合

    1. 字符串 字符串就是一串零个或多个字符,并且以一个位模式全为0的NUL字节结尾. 头文件string.h包含了使用字符串函数所需要的原型和声明. memxxx函数提供了累死你字符串函数的能力,但是 ...

  7. c语言用表格形式输出_表格形式的C和C ++之间的区别

    c语言用表格形式输出 In this tutorial you will learn about difference between C and C++ language i.e. C vs. C+ ...

  8. c语言普通变量间接访问,C语言学习笔记-指针

    野指针问题 野指针是没有指向地址的指针,也就是该指针指向的地址是随机的. 因为指针的指向地址是随机的,所以很有可能指向不可访问的弟子,导致程序崩溃,或者访问了不该访问的地址,导致影响其他功能使用 为了 ...

  9. c语言里变量列表,嵌入式C语言里的土豪们之变量类型

    嵌入式C语言里的土豪们之变量类型本文引用地址:http://www.eepw.com.cn/article/184332.htm 上一篇我们谈到了运算奢华大户除法(详见<嵌入式C语言里的土豪们之 ...

最新文章

  1. JVM启动流程和内存结构
  2. python3.7安装numpy模块-Python3.7模块numpy
  3. Delphi6 提示 Class TMSComm not found
  4. php获取浏览器cookies,简单实现创建以及读取浏览器中cookie的几种方法
  5. SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
  6. SharePoint 2010 初体验(二)搭建一个简单的三态工作流
  7. sqoop导入-hdfs
  8. linux用户双重认证登录,linux PAM 用户登录认证
  9. 115个Java面试题和答案——终极列表(上)
  10. kafka部分重要参数配置-broker端参数
  11. 推导基姆拉尔森公式根据日期计算星期
  12. 3个最典型的图表错误使用方式,赶紧看看自己是否中招
  13. Centos memcached的php拓展 管理界面
  14. Sharepoint 弹出消息提示框
  15. 【C#】WM 消息大全
  16. [C/C++11语法]_[0基础]_[lamba 表达式介绍]
  17. 教你炒股票25:回复(1)
  18. 解决Iframe嵌入帆软BI系统后,Chrome升级后跨域出现登录界面,Cookie写入不成功。解决办法
  19. 西门子S7-1200系列PLC Modbus通信的踩坑记录
  20. 电源测试之输出动态响应(Output Dynamic Response Test)

热门文章

  1. python模拟浏览器模块,python模块学习---mechanize(模拟浏览器)
  2. Python函数的装饰器,两层装饰器和三层装饰器
  3. 计算机网络职称考试试题,职称计算机考试网络综合试题
  4. java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet
  5. php pdo 数组,php – 使用PDO更新数组
  6. 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
  7. Ubuntu下使用中文语言
  8. 字典、列表、元祖、字符串的综合(1)
  9. linux——关于ip、静态网络、动态网络、网关、DNS的设置
  10. CentOS6.5安装MySQL5.1.73