65535 1c语言,C语言回忆录1--数据类型

本文详细介绍了计算机科学中的数据类型,包括基本数据类型如字符、整型、浮点型及其不同范围,以及构造类型如数组、结构体、枚举等。强调了选择合适数据类型以节省内存的重要性,并通过实例展示了如何定义和引用这些类型。此外,还提到了数组与指针的关系,以及结构体在表示复杂数据关系时的作用。
摘要由CSDN通过智能技术生成

1、数据类型

a.概念:什么是数据类型?

简单点儿来说,数据类型就是计算机对现实中数据的一种抽象和表示,比如现实中的数字,字母,文字,图形等等,由于每种数据所含的内容不同,所需要的内存空间也不同,为了能够用适当的内存大小去表示数据,因此才有了整型,浮点型等数据类型,这些类型本质上只是所分配的内存空间大小不同。为了能够表示现实中一些复杂的关系,又出现了构造类型等来表示,更复杂的一些可以参考数据结构这方面的资料。

b.分类:数据类型的分类

基本数据类型

字符型    char

短整型    short

整 型    int

长整型    long

超长整型   long long

单精度浮点型 float

双精度浮点型 double

长双精度浮点 long double

构造类型

数组类型   int array[9];

结构体类型  struct abc { };

枚举类型   enum abc{};

联合体类型  union abc{};

位域型    int a:3;

指针类型分类

数据指针  int * p=&a;

函数指针  int (*f) (void );

void类型分类

void 指针类型 void * p;

void 函数类型

void 参数类型

c.基本数据类型

类型

字节

范围

(signed) char

1

-128~127

unsigned char

1

0~255

short

2

-32768~32767

unsigned short

2

0~65535

(signed) int

4

-2147483648~2147483647

unsigned int

4

0~4294967295

long int

8

-9223372036854775808~923372036854775807

unsigned long int

8

0~18446744073709551615

long long int

8

同 long int

unsigned long long int

8

同 long int

float 有效数字(6,7)

4

-3.410^-38~3.410^38

double 有效数字(15,16)

8

-1.710^-308~1.7*10^308

long double 有效数字(18,19)

16

-1.210^-4932~1.210^4932

注:由于不同平台的数据类型占用大小不一样,具体占用字节可以使用sizeof(T)得出

对于这些不同的类型,在使用的时候要注意所需要表示的数据大小,来选择合适的数据类型,避免内存的浪费。

浮点型也被称为实型,就是小数的表示类型,由于计算机中内存有限,并且整型的运算速度比较快,因此将数据分为整型和实型来表示。

举个栗子,对于班级学号的表示,一般只需要unsigned char 类型就可以表示了,只需要一个字节,如果使用int,则需要4个字节,造成了内存的浪费。下面是一些实例:

eg:

int intValue=4;

char charValue='a';

long int longValue=2323223;

long long longlongValue=22222121212;

所定义的变量要注意使用范围,不要溢出

//这是个测试系统基本类型占用字节的代码

#include

void main()

{

printf("char is %d\n",sizeof(char));

printf("short is %d\n",sizeof(short));

printf("int is %d\n",sizeof(int));

printf("long int is %d\n",sizeof(long int));

printf("long long int is %d\n",sizeof(long long int ));

printf("float is %d\n",sizeof(float));

printf("double is %d\n",sizeof(double));

printf("long double is %d\n",sizeof(long double));

printf("Hello,Data Type!\n");

}

d.构造类型

构造类型是由基本数据类型组合所得到的,主要由数组,结构体,联合体,枚举类型等组成,其中比较常用的是数组以及结构体类型

d.1数组

数组就是若干个相同类型的的数据的集合,其作用是简化了我们定义的繁琐程度,假如一个班里有50位学生,为了表示他们的成绩,我们需要定义50个变量来表示他们,需要写一大串程序,如果使用数组就比较方便了,数组的本质上是在内存空间里开辟连续的若干个相同的某种基本数据类型大小的内存空间,程序的本质最终都会反映在内存的改变,不仅要知道程序的表象,更要深入其本质去理解内存的变化。

定义: 基本类型 数组名[num1][num2][....];

eg:

int a[10];

float f[4];

double dou[5];

分类:严格来说,数组并没有所谓的分类,一般根据我们的需要来定义不同维度的数组,常用的多为一维和二维数组。

int one[10] ; //这是一维

int two[10][2]; //二维

int three[10][2][3]; //三维 一般用到三维就不错了

引用方式: 数组定义后就可以使用了,引用和定义方式差不多,定义的时候[]内的数字代表数组的大小,引用的时候代表数组中某个元素的索引,我们习惯上使用下标这个词来称呼它。值得注意的是,数组引用的时候序号最大为数组大小-1,从0开始引用。

//定义了一个10个int元素的数组

int array[10];

//引用

array[0];//这里引用了array数组中的第一个元素

array[9];//这里引用了array数组中最后一个元素

数组和指针的关系: 其实指针和数组的访问是可以相互转化的,他们之间的关系比较复杂,这里就不多加赘述了,如果有需要的可以去查阅相关资料。

d.2结构体

结构体是用来表示复杂关系的一种可以自定义的数据类型,和面向对象中的类相似,一般情况下只将数据放在结构体中,而类class则将函数(方法)一起放在类中。

定义结构体: 结构体的定义比较灵活,以struct关键字开始,接着是结构体类型名和大括号,结构体类型名也是可以省去的,这时候需要直接定义结构体变量。

struct 结构体类型名

{

//成员表列

};

//注意末尾的分号不能少

eg:

struct student

{

char name[20];

int age;

int height;

char sex;

float score;

};

定义结构体变量:定义结构体指的是定义一种新结构体类型,比如student结构体类型,定义结构体变量是指用这个新的结构体类型来定义一个变量。

struct student a,b; //此处定义了两个student 类型的变量a,b

struct student * P; //定义了一个结构体指针变量

结构体成员变量的引用:结构体变量的引用有两种方式,一种是结构体变量名+小数点+结构体成员变量名,另一种是结构体指针变量+->+结构体成员变量名。

struct student a,*p;

a.name="ciqujingnian";

a.age=23;

p->height=170;

p->sex='m';

d.3枚举类型

枚举类型采用关键字enum来定义,主要是定义一些字符串来代表一些数字代码,枚举类型的成员变量实质与int类型没有什么区别,使用枚举类型的作用主要是增加程序的可读性。

定义:enum +枚举类型名+ {成员}变量名列表

eg:

enum day

{

MON,

TUE,

WED,

THU,

FRI,

SAT,

SUN

};

enum day today;//定义一个day类型的变量today

枚举类型中成员的值默认是从0开始以1递增的,也可以指定某一个成员的值,此成员之后的值将会以这个成员的值开始以1递增

引用:定义了某个枚举类型的变量之后便可以使用此变量了,不过此变量赋值时只接受枚举类型的成员值。

enum day today;

today=MON;

today=SAT;

其实,任意的int类型的数字都可以赋值给枚举类型的变量,但是要添加enum 类型名强制转换,转换后这个枚举变量的值已经不是枚举类型中枚举成员的值了,也就失去了枚举变量的作用和意义。

d.4联合体类型和位域类型

联合体类型和位域类型使用的不多,这里就不赘述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值