结构体、共用体和用户定义类型(1)

  C语言的基本类型有:整型(int)、字符型(char)、浮点型(float)、双精度型(double)、空值型(void)以及派生类型 (指针和数组)。本章介绍C语言中可由用户构造的三种数据类型:

  (1)用户定义类型(typedef);(2)结构体(struct);(3)共用体(union);

  1 用typedef说明新类型名

  C语言允许用 typedef 说明一种新类型名,一般形式为:

    typedef  类型名  标识符;

  “类型名”必须是在此语句前已有定义的类型标识符。“标识符”是一个用户定义标识符。typedef 语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并不产生新的数据类型,原有类型名依然有效。例如:

    typedef  int  INTEGER;

  该语句把一个用户命名的标识符 INTEGER 说明称一个 int 类型的类型名。在此说明之后,可以用标识符 INTEGER 来定义整型变量。例如:

    INTEGER m, n;  等价于  int m, n;

  INTEGER 是 int 的一个别名。为便于识别,一般习惯将新的类型名用大写字母表示。如:

    typedef char* CHARP;

    CHARP p;

  等价于:char* p;

  2 结构体类型

  2.1结构体类型的说明

  结构体类型说明的一般形式为:

    struct 结构体标识名

    {

      类型名1  结构成员名表1

      类型名2  结构成员名表2

      ...

      类型名n  结构成员名表n

    };

  其中 struct 是关键字。“结构体标识名”和“结构成员名”是用户定义的标识符,其中“结构体标识名”是可选项,在说明中可以不出现。每个“结构成员名表”中都可以含有多个同类型的成员名,它们之间用逗号隔开。结构体中的成员名可以和程序中的其他变量同名;不同结构体中的成员也可以同名。注意:结构体说明同样要以分号(;)结尾。

    struct date

    {int year, month, day;};

  结构体类型说明中的“类型名”,不仅可以是简单数据类型,也可以是结构体类型。当结构体说明中又包含结构体时,成为结构体的嵌套。如下:

    struct student

    {

      char name[12];

      char sex;

      struct date birthday;

      float sc[4];

    };

  ANSI C 标准规定结构体至少允许嵌套15层,允许内嵌结构体成员的名字与外层成员的名字相同。

  结构体类型的说明只是列出了该结构的组成情况,标志着这种类型的结构“模式”已经存在,编译程序并没有因此而分配任何存储空间。真正占有存储空间的仍是具有相应结构体类型的变量、数组以及动态开辟的存储单元。因此,在使用结构体变量、数组或指针变量前,必须先对这些变量、数组或指针变量进行定义。

时间: 2024-11-06 04:17:45

结构体、共用体和用户定义类型(1)的相关文章

瘋子C语言笔记(结构体/共用体/枚举篇)

 (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct date birthday; /*birthday 是 struct date 类型*/ char addr[30]; }student1,student2; (1):结构体可嵌套 (2):与枚举相比结构体内元素为变量,而枚举为常

8.1 结构体 共用体 typedef 枚举

typedef :  给类型起一个新的名字 int main() { unsigned int a = 10; } 可以用下面表示: typedef unsigned int u32_t; int main() { u32_t a = 10; } 与definde的区别: typedef char *  N; #define N char* N p1,p2,p3; define的话  p2 p3 变成了char 类型 结构体 :不同类型元素的汇聚 ①匿名结构体 struct{ int id;  

结构体、共用体和用户定义类型(2)

2.2结构体类型的变量.数组和指针变量的定义 可以用以下四种方式定义结构体类型的变量.数组和指针变量: (1)紧跟在结构体类型说明之后进行定义.例如: struct student { char name[12]; char sex; struct date birthday; float sc[4]; } std, pers[3], *pstd; 此处,在说明结构体类型 struct student 的同时,定义了一个结构体变量 std.有3个变量的结构体数组 pers 和基类型为结构体类型的

全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

例14.2 对比向函数传递结构体数组名和向函数传递结构体变量名的区别. 1 #include<stdio.h> 2 3 typedef struct 4 { 5 int num; 6 double mark; 7 }REC; 8 9 void sub1(REC x) 10 { 11 x.num = 23; 12 x.mark = 81.5; 13 } 14 15 void sub2(REC y[]) 16 { 17 y[0].num = 12; 18 y[0].mark = 77.5; 19

不可或缺 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语言 共用体

//共用体 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{

C 共用体

C 共用体 共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 定义共用体 为了定义共用体,您必须使用 union 语句,方式与定义结构类似.union 语句定义了一个新的数据类型,带有多个成员.union 语句的格式如下: union [union tag] { member definition; member definition; ... member d

共用体与枚举

共用体 共同体和结构体类似,也是一种构造类型的数据结构,既然是构造类型的,咱们先定义除类型,然后用类型定义变量 定义共用体类型得方法和结构体非常相似,把struct 改成union就可以 在进行某些算法得时候,需要使几种不同类型的变量存到同一段内存单元中,几个变量间相互重叠 这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作"共用体"类型结构,共用体所有成员占有同一段地址空间 共用体的大小是其占内存长度最大的成员的大小 举例 typedef struct data{ shor

应用C#和SQLCLR编写SQL Server用户定义函数

摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割函数属于表值函数,而平方平均数函数属于聚合函数. 环境 要求:SQL Server 2005/2008,Visual Studio 2005/2008,C# 2.0. 本页内容 概述 启用SQLCLR Base64 编码解码函数 正则表达式函数 字符串分割函数 平方平均数函数 总结 概述 微软在推出