Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103720795
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-20 16:20:18

作者:    

    4.5  变量的初始化和赋值

    一、变量的初始化
    变量的初始化是指变量在被说明的同时赋给一个初值。Turbo C2.0中外部变量
和静态全程变量在程序开始处被初始化, 局部变量包括静态局部变量是在进入定义
它们的函数或复合语句时才作初始化。所有全程变量在没有明确的初始化时将被自
动清零, 而局部变量和寄存器变量在未赋值前其值是不确定的。
    对于外部变量和静态变量, 初值必须是常数表达式, 而自动变量和寄存器变量
可以是任意的表达式, 这个表达式可以包括常数和前面说明过的变量和函数。
    1. 单个变量的初始化
    例如:
     float f0, f1=0.2;/*定义全程变量, 在初始化时f0被清零, f1被赋0.2*/
     main()
     {
          static int i=10, j; /*定义静态局部变量, 初始化时i被赋10, j不确
                              定*/
          int k=i*5;          /*定义局部变量, 初始化时k被赋10*5=50*/
          char c='y';         /*定义字符型指什变量并初始化*/
          .
          .
          .
     }

    2. 数组变量的初始化
    例如:
     main()
     {
          int p[2][3]={{2, -9, 0}, {8, 2, -5}};  /*定义数组p并初始化/*
          int m[2][4]={{27, -5, 19, 3}, {1, 8, -14, -2}};/*定义数组m并初
                                                         始化*/
          char *f[]={'A', 'B', 'C'};         /*定义数组f并初始化*/
          .
          .
          .
     }
    从上例可以看出: Turbo C2.0中数组进行初始化有下述规则:
    (1) 数组的每一行初始化赋值用"{}"并用","分开, 总的再加一对"{}"括起来,
最后以";"表示结束。
    (2) 多维数组的存储是按最右维数的变量变化最快的原则。
    (3) 多维数组存储是连续的, 因此可以用一维数组初始化的办法来初始化多维
数组。
    例如:
     int x[2][3]={1, 2, 3, 4, 5, 6};/*用一维数组来初始化二维数组*/
    (4) 对数组初始化时, 如果初值表中的数据个数比数组元素少, 则不足的数组
元素用0来填补。
    (5) 对指针型变量数组可以不规定维数, 在初始化赋值时, 数组维数从0 开始
被连续赋值。
    例如:
     char *f[]={'a', 'b', 'c'};
    初始化时将会给3个字符指针赋值, 即: *f[0]='a', *f[1]='b', *f[2]='c'。
3. 指针型变量的初始化
    例如:
     main()
     {
          int *i=7899;        /*定义整型数指针变量并初始化*/
          float *f=3.1415926; /*定义浮点数指针变量并初始化*/
          char *s="Good";     /*定义字符型指针变量并初始化*/
          .
          .
          .
     }

    二、变量的赋值
    变量赋值是给已说明的变量赋给一个特定值。
    1. 单个变量的赋值
    (1) 整型变量和浮点变量
    这两种变量采用下列格式赋值
          变量名=表达式;
    例如:
     main()
     {
          int a, m;      /*定义局部整型变量a, m*/
          float n;       /*定义局部浮点变量f*/
          a=100, m=20;   /*给变量赋值*/
          n=a*m*0.1;
          .
          .
          .
     }

    说明:
    Turbo C2.0中允许给多个变量赋同一值时可用连等的方式。
    例如:
     main()
     {
          int a, b, c;
          a=b=c=0;       /*同时给a,b,c赋值*/
          .
          .
          .
     }

    (2)  字符型变量
    字符型变量可以用三种方法赋值。
    例如:
     main()
     {
          char a0, a1, a2;    /*定义局部字符型变量a0, a1, a2*/
          a0='b';             /*将字母b赋给a0*/
          a1=50;              /*将数字2(十进制ASCII值为50赋给a1*/
          a2='\x0d';          /*将回车符赋给a2*/
          .
          .
          .
     }

    (3) 指针型变量
    例如:
     main()
     {
          int *i;
          char *str;
          *i=100;
          str="Good";
          .
          .
          .
     }
    *i表示i是一个指向整型数的指针, 即*i是一个整型变量, i是一个指向该整型
变量的地址。
    *str表示str是一个字符型指针, 即保留某个字符地址。在初始化时, str没有
什么特殊的值, 而在执行str="Good"时, 编译器先在目标文件的某处保留一个空间
存放"Good\0"的字符串, 然后把这个字符串的第一个字母"G"的地址赋给str, 其中
字符串结尾符"\0"是编译程序自动加上的。

阅读(206) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~