c语言标量变量是什么,C语言中的结构和联合之间的区别
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语言中的结构和联合之间的区别相关推荐
- 标量变量 c语言,标量变量
标量变量是指只能存放单个数值的变量.当编写pl/sql程序时,最常用的变量就是标量变量.当定义标量变量时,必须要指定标量数据类型.标量数据类型包括数字类型.字符类型.日期类型和布尔类型,每种类型又包含 ...
- C语言*在变量前 **p,C语言之指针*p++和*(p++)区别
在C语言的指针运算中,经常会碰到以下用法:*++p.++*p.(*p)++.*(p++),在解决问题前,先了解一下基础: 1. * 号和 ++ 符号属于同级运算,且优先运算顺序是从右到左. 2.a++ ...
- c语言环境变量的作用,C语言程序的环境变量
环境变量是一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如path,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path ...
- c语言define变量字符串拼接,C语言#define的用法
C语言#define的用法 例如:如果x是一个宏参量,那么#x可以把参数名转化为相应的字符串.该过程称为字符串化. #include #define PSQR(x) printf ("The ...
- c语言各种变量的优缺点,C语言优缺点
C语言优缺点 C语言跟别的语言比是最基础的,学单片机就是要先好C语言,以下是关于C语言优缺点,欢迎阅读! 1. 简洁紧凑.灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小 ...
- C语言学习之字符串,字符,字节,结构和联合
1. 字符串 字符串就是一串零个或多个字符,并且以一个位模式全为0的NUL字节结尾. 头文件string.h包含了使用字符串函数所需要的原型和声明. memxxx函数提供了累死你字符串函数的能力,但是 ...
- c语言用表格形式输出_表格形式的C和C ++之间的区别
c语言用表格形式输出 In this tutorial you will learn about difference between C and C++ language i.e. C vs. C+ ...
- c语言普通变量间接访问,C语言学习笔记-指针
野指针问题 野指针是没有指向地址的指针,也就是该指针指向的地址是随机的. 因为指针的指向地址是随机的,所以很有可能指向不可访问的弟子,导致程序崩溃,或者访问了不该访问的地址,导致影响其他功能使用 为了 ...
- c语言里变量列表,嵌入式C语言里的土豪们之变量类型
嵌入式C语言里的土豪们之变量类型本文引用地址:http://www.eepw.com.cn/article/184332.htm 上一篇我们谈到了运算奢华大户除法(详见<嵌入式C语言里的土豪们之 ...
最新文章
- JVM启动流程和内存结构
- python3.7安装numpy模块-Python3.7模块numpy
- Delphi6 提示 Class TMSComm not found
- php获取浏览器cookies,简单实现创建以及读取浏览器中cookie的几种方法
- SpringBoot 中常用注解@PathVaribale/@RequestParam/@GetMapping介绍
- SharePoint 2010 初体验(二)搭建一个简单的三态工作流
- sqoop导入-hdfs
- linux用户双重认证登录,linux PAM 用户登录认证
- 115个Java面试题和答案——终极列表(上)
- kafka部分重要参数配置-broker端参数
- 推导基姆拉尔森公式根据日期计算星期
- 3个最典型的图表错误使用方式,赶紧看看自己是否中招
- Centos memcached的php拓展 管理界面
- Sharepoint 弹出消息提示框
- 【C#】WM 消息大全
- [C/C++11语法]_[0基础]_[lamba 表达式介绍]
- 教你炒股票25:回复(1)
- 解决Iframe嵌入帆软BI系统后,Chrome升级后跨域出现登录界面,Cookie写入不成功。解决办法
- 西门子S7-1200系列PLC Modbus通信的踩坑记录
- 电源测试之输出动态响应(Output Dynamic Response Test)
热门文章
- python模拟浏览器模块,python模块学习---mechanize(模拟浏览器)
- Python函数的装饰器,两层装饰器和三层装饰器
- 计算机网络职称考试试题,职称计算机考试网络综合试题
- java hashset 源码_Java集合源码分析-HashSet和LinkedHashSet
- php pdo 数组,php – 使用PDO更新数组
- 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
- Ubuntu下使用中文语言
- 字典、列表、元祖、字符串的综合(1)
- linux——关于ip、静态网络、动态网络、网关、DNS的设置
- CentOS6.5安装MySQL5.1.73