设为首页 加入收藏

TOP

1.1.2 数据类型
2013-10-10 22:52:52 来源: 作者: 【 】 浏览:141
Tags:1.1.2 数据 类型

1.1.2  数据类型

一个程序应包括数据的描述和动作的描述两方面内容。著名计算机科学家沃思曾提出一个公式:数据结构+算法=程序,可见数据结构在程序中的地位。C语言为用户提供了丰富的数据结构,还允许用户自定义复杂的数据结构。
C语言提供的数据结构是以数据类型形式出现的,C的数据类型划分如图1-1所示。

1. 常量与变量

C语言中数据有常量与变量之分。在程序运行过程中,其值不能改变的量称为常量,其值可以改变的量称为变量。常量可分为不同类型,如整型常量 3,实型常量-1.23,字符型常量‘a’。常量一般能从字面形式判别,也可用一个标识符代表,可用下面形式声明。

#define 常量名 常量值

例如:

#define PI 3.14             /*定义PI代表常量3.14*/

图1-1 C语言数据类型划分

变量可用下面的形式声明。

数据类型 变量名

如:

int I;                                           /*定义i为整型变量*/
char name;                                      /*定义name为字符型变量*/

在C语言中,习惯上用大写字符代表常量,用小写字符代表变量。对于变量,要求“先定义,后使用”。以下分别介绍整型、实型等数据类型。

2. 整型数据

(1) 整型常量

整型变量可分为int、short int、long int和unsigned int、unsigned short、unsigned long等类型,它们表示的数的范围不同。

(2) 整型变量

整型变量可分为基本型、短整型、长整型和无符号型4种,下面给出一个实例。

【代码1-1】

main()
{ 
    int a,b,c;
    unsigned d;
    a=6;b=-7;u=78;
    c=a+b+u;
    printf("%d\n",c);/*printf()为格式化输出函数*/
    /* "%d"表输出格式为十进制整数*/
}

运行结果为:

77

printf()是标准输出函数,在后面我们将要详细说明。

3. 实型数据

(1) 实型常量

实型常量有两种表示方式,一种为十进制形式,如0.12、36.2;另一种为指数形式,如123e3表示123000。要注意 e 字母之前必须要有数字,e字母后面必须为整数。

(2) 实型变量

实型变量分为单精度(float)和双精度(double)两种,如:

float x ;                                /*指定x为单精度实数*/
double y ;                              /*指定y为双精度实数*/

单精度实数在内存中占4个字节,而双精度实数在内存中占8个字节。

4. 字符型

(1) 字符常量

C的字符常量是用单引号括起来的一个字符,如‘a’、‘A’等,注意以上两个字符是不同的。另外,C 语言还允许以一个“\”开头的特殊字符常量,具体规定如表 1-1 所示。

表1-1  特殊字符常量表

字符类型< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

\n

换行

\t

横向跳格

\v

竖向跳格

\b

退格

\r

Enter

\f

走纸换页

【代码1-2】

main()
{
    printf(" ab c\t de\rf\tg\n");
    printf("h\ti\b\bjd");
}

读者可以自己思考一下程序的输出结果。

(2) 字符变量

用来存放字符常量,且只能放一个字符,定义规则如下:

char d;                       /*表示d为字符型变量*/

(3) 字符数据在内存中的存储形式和使用方式

字符变量在对应的内存中存放的是该字符相应的ASCII码,例如字符‘a’的ASCII代码为97,‘b’的ASCII代码为98,而字符型与整型变量还可以互相赋值。

【代码1-3】

main()
{
    char c1,c2;
    c1=97,c2=98;
    printf("%c %c",c1,c2);/* "%c"表示输出格式为字符类型*/
}

输出结果是:

a b

(4) 字符串常量

字符串常量与字符常量的区别在于前者是双引号括起来的字符序列,而后者是单引号括起来的单个字符。如在内存中‘a’的长度是一个字符,而“a”则占有两个字符,后者包括结束标志“\0”。

5. 枚举型

所谓“枚举”,是指将变量的值一一列举出来,变量的值只限于列举出来的值,可用如下定义形式:

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

它定义了一个名为weekday的枚举类型,能取7个值。然后,我们可以用此类型来定义变量,如:

enum weekday date;

则date被定义成枚举变量,它能取sun到sat这7个值之一,如:

date=sun;

也可直接定义枚举变量,如:

enum weekday {sun,mon,tue,wed,thu,fri,sat} date;             /*效果与上相同*/

在C编译中,对枚举元素按常量处理,且它们是有值的。在上面的定义中,sun的值为0,…… sat的值为6。

【代码1-4】

main()
{
    enum {sun,mon,tue,wed,thu,fri,sat} date;
    date=mon;
    printf("%d",date);
}

输出结果是:

1

6. 布尔型

C语言将非零整数都认为是“真”,认为零是“假”,布尔型只有“真”、“假”两个值。在表达式中,布尔量也作为整数处理,整数也可出现在布尔表达式中。

【代码1-5】

main()
{
    int m=1,j=6;
    while(m)/* m不等于0,为真*/
    {
        j=j+m;
        m=m-1;
    }
    printf("%d",j);
}

则最后输出结果是:

7

7. 数组

数组是有序数据的集合,数组中每一元素都属于同一数据类型,用一个统一的数组名和下标来惟一地确定数组中的元素。

(1) 一维数组
① 一维数组的定义格式如下:

类型说明符 数组名[常量表达式]

如:

int a[10];

数组名为a,且有10个元素,下标从0到9,即a[0]到a[9]。

注意常量表达式不能是变量。

② 一维数组的引用:只能逐个引用数组元素而不能引用整个数组。

数组名[下标]

【代码1-6】

main()
{
    int j,a[10];
    for(j=0;j<=9;j++) 
        a[j]=j;
    for(j=9;j>=0;j--)
        printf("%d",a[j]);
}

运行结果是:

9876543210

③ 一维数组的初始化列举如下。

static int a[10]={0,1,2,3,4,5,6,7,8,9};/*static是"静态存储"的意思*/

则a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9。

如果花括号中值的个数少于10,则后面的都为0。

(2) 字符数组

字符数组是一类特殊的数组,数组的每一个元素存放一个字符。

下面是它的定义方式:

char 数组名[常量表达式];

如:

static char c[5]={'a', 'e', 't', 'g', 'b'};

8. 指针

指针是C语言中的一个重要特色,可以说是C语言的精华。它的概念非常复杂,使用非常灵活,是 C 语言中最大的难点。

一个变量在内存中的地址就称为该变量的“指针”。我们通过地址就能找到所需的变量单元。

指针变量的定义用下面的形式:

类型标识符 *标识符;

例如:

int *pointer_1;

定义了一个指针变量pointer_1,它指向整型变量。

如果还定义了一个整型变量i,则可用赋值语句使一个指针变量指向一个整型变量。如:

pointer_1=&i;

&i是变量i在内存中的地址。

或写成:

*pointer_1=I;

这里我们只做简要的介绍,读者如想再深层次地了解指针,可查阅有关方面的书籍。最后我们以一个程序结束指针的学习。

【代码1-7】

main()
{
    int a,b; 
    int *pointer_1,*pointer_2;
    a=100,b=10;
    pointer_1=&a;
    pointer_2=&b;
    printf("%d,%d\n",a,b);
    printf("%d,%d\n",*pointer_1,*pointer_2);
}

程序运行的结果为:

100,10
100,10

9. 结构体

结构体是C语言提供的一种数据结构,相当于其他高级语言中的“记录”。

下面是定义一个结构体类型的一般形式:

struct结构体名
{
成员列表
}变量名列表;

对各成员都应进行类型说明,如:

类型标识符 成员名

下面是一个具体实例:

struct student
{
    int num; 
    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
}student1={"33","zhanwei","m","22","75","32#307"};

定义了一个struct student类型的变量student1,它包括num、name、sex、age、score、addr不同类型的数据项,各项初值分别为 33、zhanwei、m、22、75、32#307。

10. 共用体

几个不同的变量存放到同一段内存的结构,称为“共用体”。

“共用体”类型变量的定义形式如下:

union 共用体名
{
成员表列
}变量表列;

如:

union data
{
    int j; 
    char ch;
    float f;
}a, b, c;

上面定义了一个union data类型,再将a、b、c定义为 union data类型。

共用体变量的引用方式如下:

a.j

上语句引用共用体变量a中的整型变量j。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.3 本 章 小 结 下一篇ASP.NET调用.sql文件(二)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: