C结构体struct 和 共用体union的使用测试

#include <stdio.h>
struct
{
	char name[10];
	char sex;
	char job;
	int  num;
	union{
		//联合只能共用同一个内存
		int  class;
		char position[10];
	}category;
}PE[2];

int main(){
	int i;
	for(i=0;i<2;i++){
		printf("请输入:号码 姓名 性别 职业\n");
		scanf("%d %s %c %c", &PE[i].num,PE[i].name,&PE[i].sex,&PE[i].job);
		if(PE[i].job==‘s‘){
			printf("请输入班级:");
			scanf("%d",&PE[i].category.class);
		}else if(PE[i].job==‘t‘){
			printf("请输入职业:");
			scanf("%s", PE[i].category.position);

		}else{
			printf("输入错误");
		}
	}
	return 0;
}

  共用体:共享同一个内存;一旦a使用了b就被弃用 b使用a就被弃用!

原文地址:https://www.cnblogs.com/wanglijun/p/8576745.html

时间: 2024-10-09 07:24:27

C结构体struct 和 共用体union的使用测试的相关文章

入职培训笔记记录--day9(1、指针函数与函数指针、函数指针数组 2、malloc memset 3、递归函数 4、结构体 5、共用体---》大小端 6、枚举)

1.指针函数与函数指针.函数指针数组 指针函数:返回值为指针的函数 char *fun() { char str[] = "hello world"; return str; } int main() { char *p = fun(); puts(p); return 0; } 编译时,会出现警告,返回了一个已经被释放掉的内存空间的首地址解决方法:1.static 2.char *str = "hello world"; 3.malloc 注意:使用完后要free

C语言:结构体和联合体(共用体)

结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类型成员大小的整数倍. cpu的字长: 32位的cpu或64位的cpu 32位或64位指的是cpu的字长 字长实际上指得是cpu在访问内存时,一次可以读取的长度. 内存对齐(可以设置,一般是2的倍数,虽然浪费了空间,但是方便了cpu更好更快的取出数据): char  4个字节 int    4个字节

漫谈C语言结构体struct、公用体union空间占用

先用代码说话: #include<stdio.h> union union_data0{ int a ;//本身占用4个字节 char b ;//本身占用1个字节 int c ; }; union union_data1{ short a;//本身占用2个字节 char b[13];//本身占用13个字节 int c ;//本身占用4个字节 }; struct struct_data{ int a ;//int本身占用4个字节,偏移量为0 char b ;//char本身占用1个字节,偏移量为

[C++] Union共用体示例讲解

/* * UnionLab.cpp * * Created on: Nov 29, 2014 * Author: sodino */ #include <iostream> using namespace std; /** * "共用体"是一种特殊的类,在一个"共用体"内可以定义多种不同的数据类型. * 一个被声明为该"共用体"类型的变量中,允许装入该"共用体"所定义的任何一种类型的数据, * 这些不同类型的数据共

不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 共用体 枚举 类型定义符 示例cStruct.h #ifndef _MYHEAD_STRUCT_ #define _MYHEAD_STRUCT_ #ifdef __cplusplus extern "C" #endif char *demo_cStruct(); #endif cStruct.c /* * 结构体,共用体,枚举,类型定义符 * * 注:结构体变量在做参数传递时,其内每个

c的详细学习(10)结构体与共用体的学习(二)

在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而共用体变量的所有成员占用相同的存储空间,在某一时刻只有一个成员起作用. (1)共用体类型的定义 定义共用体类型的一般形式: union 共用体类型名 { 数据类型  成员名1; 数据类型  成员名2; 数据类型  成员名3; ...... }; 以上定义了一个名为data的共用体类型.它说明该类型由

字节对齐-------结构体、共用体

字节对齐结构体字节对齐:(结构体成员的数据类型为基本数据类型(int,double,char,short,long等))结构体的总大小是结构体成员中最宽基本数据类型大小的整数倍#include<iostream>using namespace std;struct S0{int a;char b;short c;};struct S1{char b;int a;short c;};struct S2{short d;char b;short e;int a;short c;};void mai

结构体及共用体的初始化方法

结构体初始化: /************************************************************ *  全局变量定义 ************************************************************/ AD_CTL_ST g_AdCtl; //定义结构体变量 AD_BUF_ST g_AdBuf[BUF_NUM]; //定义结构体数组 /****************************************

C语言 共用体

//共用体 union #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> // union 共用体,构造数据类型,也叫联合体,用途:十几个不同类型的变量共占一段内存(相互覆盖) //共用体在类型定义的时候并不分配内存,定义共用体变量的时候才分配内存 union data{ char c; int a[10]; }udat1; union stu{