C语言——各种数据类型

来源:互联网 发布:增肌粉蛋白粉区别知乎 编辑:程序博客网 时间:2024/05/17 08:37

一、数据分类

①静态数据:一般我们说的“我的硬盘有500G”,那就是静态数据住的房子了,并且就是断电后也能永久性的存在,除非你主动删了它。

②动态数据:也可以叫临时数据,就是程序运行时产生的各种各样的数据。如果断电,数据就没了。一般我们说“我的电脑4G内存呀”,就是指的这个。

内存的访问速度比硬盘快上很多很多倍,这也是CPU不直接从硬盘读取数据的原因。

下面是我们常用数据类型图


我们来看一看各种数据类型


二、数据类型分类

1、整型类————定义:short a=10;       int a=10;        long a=10;

一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647(第一位代表符号位,所以正数最大只能第一位0,后面31一个1,所以是2的31次方-1. 而负数只要第一位是1,后面随便变,所以是-2的31次方),在内存中的存储顺序是低位在前、高位在后。

2、浮点型————定义:float a=15.3f;double b=12.3;

float-->浮点型,又称实型,也称单精度。一般占4个字节(32位)。

double-->双精度,一般占用8个字节。

float为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有27f这样格式的,编译器会直接报错,只有小数才允许加上f。

3、字符类型————定义:char a=‘c’;char a=97;char a=‘A’;

将一个数字(0~9)、英文字母(a~z、A~Z)或者 其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。

注:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc''123456'''


怎么理解这些基本的数据类型呢,让我们看看网友是怎么解释,我觉得解释得很好,拿来看看。

short、int、long、char、float、double 这六个关键字代表C 语言里的六种基本数据类型。

  怎么去理解它们呢? 举个例子:见过藕煤球的那个东西吧?(没见过?煤球总见过吧)。那个东西叫藕煤器,拿着它在和好的煤堆里这么一咔,一个煤球出来了。半径12cm,12 个孔。不同型号的藕煤器咔出来的煤球大小不一样,孔数也不一样。这个藕煤器其实就是个模子。
  现在我们联想一下,short、int、long、char、float、double 这六个东东是不是很像不同类型的藕煤器啊?拿着它们在内存上咔咔咔,不同大小的内存就分配好了,当然别忘了给它们取个好听的名字。
在32 位的系统上short 咔出来的内存大小是2 个byte;
int 咔出来的内存大小是4 个byte;
long 咔出来的内存大小是4 个byte;
float 咔出来的内存大小是4 个byte;
double 咔出来的内存大小是8 个byte;
char 咔出来的内存大小是1 个byte。
(注意这里指一般情况,可能不同的平台还会有所不同,具体平台可以用sizeof 关键字测试一下)
很简单吧?咔咔咔很爽吧?是很简单,也确实很爽,但问题就是你咔出来这么多内存块,你总不能给他取名字叫做x1,x2,x3,x4,x5…或者长江1 号,长江2 号…吧。它们长得这么像(不是你家的老大,老二,老三…),过一阵子你就会忘了到底哪个名字和哪个内存块匹配了(到底谁嫁给谁了啊?^_^)。所以呢,给他们取一个好的名字绝对重要。下面我们就来研究研究取什么样的名字好。
例如:int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以写为:int a[][3]={1,2,3,4,5,6,7,8,9};
//声明一个结构体类型struct Date
struct Date
{
//月
int month;
//日
int day;
//年
int year;
};
//声明一个结构体类型struct Student
struct Student
{
//下面是一些学生的信息
int num;
char name[20];
char sex;
int age;
//成员birthday属于struct Date类型
struct Data birthday;
char addr[30];
};

4、数组

什么是数组?

    所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

1>一维数组————定义:int a[3]={2,3,4};

int a[3]={2,3,4};表示“a[0]=2,a[1]=2,a[2]=4”,下标从0开始,依次增加

int b[10]={1,2,3,4};表示前面4个元素用1,2,3,4,而后面的6个元素用0补齐

int c[]={1,2,3,4};表示由于数据的个数已经确定,因此可以不写数组长度

2>二维数组————定义:int b[2][3]={{1,2},{1,3,4}};//可以看成是两行三列的一个表格,即2×3的表格

①按行分段赋值可写为int a[5][3]={ {8,75,9},{61,5,71},{59,3,70},{85,7,90},{76,77,8} };与int a[5][3]={ 8,75,9,61,5,71,59,3,70,85,7,90,76,77,8 };是等同的

可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:int a[3][3]={,,}; 是对每一行的第一列元素赋值,未赋值的元素取0值。 

int a [3][3]={{0,1},{0,0,2},}; 赋值后的元素值为

 010

 002

 000

③如对全部元素赋初值,则第一维的长度可以不给出。

一般一维数组和二维数组经常用到。

5、结构体

1>结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构

2>定义一般为:struct 结构体名{成员列表};struct 结构体名{成员列表} 结构体变量名;

3>用法

用法一:

结构就如下图所示


定义结构体类型变量:

结构体类型名 结构体变量名;如


用法二:在声明结构体变量的同时定义变量(大型程序不便维护)

struct 结构体名

{

成员列表

}变量名表列;

用法三:不指定类型名而直接定义结构体类型变量(独用,不能再用此结构体再去定义其他变量)

struct

{

成员列表

}变量名列表;

4>初始化

struct Date birthday;

struct Date birthday={4,24,2015};

struct Date birthday={month=4,day=24,year=2015};

struct Date birthday={.month=4,.day=24,year=2015};

5>引用

用成员运算符( . )

如:int a=birthday.month;

6、枚举

C语言中,枚举类型是一种构造数据类型。枚举类型用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。

1>声明:

enum [枚举名]{枚举元素列表};

如:

enum Weekday{sun,mon,tue,wed,thu,fri,sat};

一般,用星期,颜色这类的时候用枚举。

下面将会写一个综合的程序,无实际意义。纯理解<见下一篇>







































0 0
原创粉丝点击