logo
天地变化的道理
使用率很高网站
生活要常常分享
您身边百科全书
免费为您秀产品
数据类型 (C语言)
重定向;重新导向;字符;字元;文件; 档案;快捷方式; 捷径;项目;专案;计划;计划;计划;计算机; 电脑; 电脑; 在C语言中,数据类型可以分为两类:基础数据类型和复合数据类型。 基础数据类型. "注意:以下是典型的数据位长和范围。编译器可能使用不同的数据位长和范围。请参考具体的参考。" 在标准头文件limits.h 和 float.h中说明了基础数据的长度。float,double和long double的范围就是在IEEE 754标准中提及的典型数据。另外,C99添加了新的复数类型,C11添加了原子类型,它们不在本条目讨论范围内。关于这些类型的具体含义和部分细节,参见资料类型,最后一列写出了这些类型在硬件层面的类型(x86&x86_64实现) 注:粗体为C99所新增的类型。 复合数据类型. 在C语言中,复合数据类型可分为三类:结构、联合和枚举。在现代C语言中,联合和枚举的使用频率已逐渐减少。 结构. 结构(structure variable)允许构造由多个基础数据类型组合而成的复杂结构。结构为面向对象编程的蓝本。以下示例通过结构和结构体里的指针实现了二叉树结构: typedef struct Bintree { int data; struct bintree *lchild; // left child of the node struct bintree *rchild; // right child of the node } bintree; // 自定义 bintree 类型 为结构定义变量时通常会用到动态内存分配: bintree *tree; tree = mktree(); // 分配到 tree 指针 tree->data = 1; tree->lchild = mktree(); 由于C语言不具备自动垃圾收集(Garbage Collection)功能,使用完毕后调用codice_1来释放之前通过codice_2分配的内存。详见这里。 在C99标准中,还添加了名为伸缩型数组成员的特性,关于此特性的内容超出了该条目的介绍范围,若需了解更多信息可参见文档或其它材料。 联合. 联合(union)与结构相类似,但不同的是,联合在某一特定时刻只有最后被使用的成员的值是确定的,因此一个联合只使用所有成员中所占空间最大的成员所使用的内存。然而,一些编译器可以通过编译参数或#pragma的方式强制联合使用与所有成员所占储存空间的和相等的储存空间,在这种情况下,除最后被使用的成员外,其余成员的值是未定义的。以下给出了联合的一个声明: union foo{ int bar; double foobar; foo.bar = 8; foo.foobar = 3.14; 在这个例子中,假设使用32位平台编译,一个double变量占8字节,一个int变量占2字节(由上表得),则该联合所占大小即为double类型的大小——8字节。在这段程序执行完毕后,foo.bar的值是未定义的,而foo.foobar的值为3.14。 枚举. 枚举(enumerated type)用来声明一组整数常量。默认情况下,枚举声明格式为enum "type" {value1,value2...,valuen};此时value1,value2分别为0,1,直到n-1。事实上,枚举类型在C语言实现中是以int类型储存的。以下是枚举的一个声明: enum a { b , c , d }; 在此之后,便可以以如下方式使用: enum a foo; foo = b; if(foo != c) //等同于if(foo != 1) do_something(); 而此时的b,c,d分别为0,1,2。 另外,也可以手动为枚举列表中的常量赋值。下面是一个例子: enum colour {red = 100,blue = 700,yellow = 200}; 则此时red,blue,yellow的值分别为100,700,200. 需要注意的是,枚举在C和C++中所表现的行为有一些细微的差异。参见C与C++的兼容性。
数据类型 (C语言)
生成维基百科快照图片,大概需要3-30秒!
如果网站内容有侵犯您的版权
请联系:pinbor@iissy.com
Copyright ©2014 iissy.com, All Rights Reserved.