51CTO C开发频道中笔记之一(结构体和枚举)

(1)结构体和枚举是C++中的构造数据类型。构造数据类型是由基本数据类型按照一定的规则组合

在一起而构成的数据类型。枚举在C/C++中,是一个被命名的整型常数的集合。

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型。

(2)结构体(struct)的使用

struct test 

 float a; 
 int b; 
}; 
上面的代码就定义了一个名为test的结构体,它的数据类型就是test,它包含两个成员a和b,成员a的数据类型为浮点型,成员b的数据类型为整型。 由于结构体本身就是自定义的数据类型,定义结构体变量的方法和定义普通变量的方法一样。  只有当你用你定义的结构体类型定义结构体变量的时候计算机才会分配内存。

test pn1; 
这样就定义了一test结构体数据类型的结构体变量pn1

结构体成员的访问通过点操作符进行:

(3)枚举在C/C++中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。

enum CMD

{

quit = 0, add = 1, search, sort

};

定义枚举变量:

CMD cmd;

对枚举变量赋值:

int input = 0;

cmd = (CMD)input;

也可以这样赋值:

cmd = quit;

要访问枚举变量的值,可以直接使用。

(4)结构体和类的区别,在c++中,结构体没有成员函数,就是只有属性,没有功能;而类具有成员函数和成员变量。还有一点就是默认访问属性不一样,在结构体中,默认访问属性是公有的(public),而类如果不声明则默认为私有的(private)。

(5)数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同。

时间: 2024-11-24 05:58:07

51CTO C开发频道中笔记之一(结构体和枚举)的相关文章

51CTO C开发频道中笔记之二(C/C++中的指针的应用及注意问题)

(1)指针是存放地址值的变量或者常量. 例如:int a=1;&a就表示指针常量("&"表示取地址运算符,也即引用). int *b,b表示的是指针变量(注意,是b表示指针变量而不是*b),*表示要说明的是指针变量.大家注意int *b[2]和int(*b)[2]是不同的,int *b[2]表示一个指针数组,而int(*b)[2]表示含有两个元素的int指针. (2)指针类型:可以把指针名字去掉,剩下的就是这个指针 例如:int *a;//指针类型为int * int

Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别

Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始-元组(tuples). 元组(tuple) 元组是多个值组成的复合值类型,例如,你可以定义一个含有整形和字符串的tuple let amout=(100,"EUR") 当你函数需要返回多个值时,元组这个时候非常有用,你可以使用下标方式来访问元组中的值,如.0,.1以此类推,如下: let

浅谈swift中的那些结构体和枚举

首先呢, 我们先写一个struct struct Point { var x = 0 var y = 1 mutating func change (newX:Int,newY: Int) { x = newX y = newY } } var p1 = Point(x: 4, y: 4) p1.x //4   在这里呢,可能有人会问,为什么在func前面要加一个mutating, 如果不加的话, 编译器抛出错误,报出不能在实例方法中修改属性值 所以呢, 我们必须如果想改变成员变量的话, 就必须

【好程序员笔记分享】——C语言之结构体与枚举

iOS培训——我的c语言笔记,期待与您交流! 一:结构体与枚举的介绍: 结构体与枚举:是一种存储复杂的数据结构体:是用户自定义的一种类型,不同类型的集合,而数组是相同类型变量的集合. 二:结构体的创建 struct user { char username[20]; int score; } 这里两种不同类型的属性的结构体. 创建结构体,就是创建一个类型,计算机并没有分配内存空间. 三:结构体的调用 struct user u1; 这里就是对结构体的调用,这个时候计算机才会为其分配内存空间. u

黑马程序员学习笔记--------C语言变量类型,结构体,枚举

本章学习的知识是定义结构体,枚举等自定义的数据类型,已经宏命令,变量类型等细小的知识点,在开始本章的新知识学习之前首先我们要明白的是C语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储.变量也是有分类型的,不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型.生命周期). 一.变量类型 变量分为全局变量和局部变量. 首先说明一下局部变量的特点 1> 定义:在函数内部定义的变量,称为局部变量.形

MFC中的NMHDR结构体

建立spin控件,创建UDN_DELTAPOS一个消息函数后: void CSpinDlg::OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) { NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0; } 问题1:参数NMHDR* pNMHDR, LRESULT* pResul

C中多变的结构体 struct typedef

 这几天看代码,看到几种类型的结构体,结构声明如下: struct    book{ string name; int price; int num; }; 此种结构定义结构变量的格式如下: struct    book      student; struct      book{ string name; int price; int num; }student; 此种形式代表声明结构的过程和定义结构变量的过程被合并成一步 typedef    struct  (book){   //b

Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

1   NSRange NSRange 的原型为 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSMakeRange的函数 NS_INLINEz是内联函数 typedef NSRange *NSRangePointer; NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) { NSRange r; r.locatio

ffmpeg中对AVInputFormat结构体中函数的调用

http://blog.csdn.net/junllee/article/details/7722605 opt_input_file()->      avformat_open_input()->             init_input()->                   av_probe_input_format()->                          av_probe_input_format2()->