黑马程序员——C语言中的数据

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、数据

1、数据的概念

我们的生活中,充斥着数据。因此,计算机必须有处理数据的能力,而计算机对数据处理则必须依赖于编程语言中的数据。作为最重要的一个编程语言,C语言中也必须有数据。

2、数据的类型

生活中的数据多种多样,因此计算机想要高效率地处理就必须对数据分类,这就形成了不同的数据类型。C语言中有五大数据类型:基本类型、构造类型、指针类型、空类型、定义类型。

常见的数据类型有:int、float、double、char。

3、数据类型占用字节说明

在C语言中,不同的数据类型占用不同的存储空间,如下表所示


4、不同数据类型的表示范围


二、常量

1、常量的概念

C语言有丰富的数据类型,然而从数据在使用中变化与否的角度,则可以分为常量和变量两大类。常量,表示一些固定的数据,也就是不能改变的数据。

2、常量的分类

常量有以下几种类别:

  • 整型常量:二进制、十进制、八进制、十六进制
  • 实型常量:单精度、双精度
  • 字符型常量:普通字符、转义字符
  • 字符串常量:注意字符串常量和字符型常量是不一样的

3、不同类型常量的表示方法

1)整型常量

整型常量的书写

    //  1)10进制整形常量(计算默认的使用10进制常量表示整数)
    10;
    18;    
    //  2)8进制整型常量
         //以0开头
    045; //这是一个8进制的整数,误区:不是10进制的15    
    //  3)2进制整型常量
         //以0b(0B)开头
    0b11111111111111111111111111111111;//32位的1
         //表示的是一个-1    
    //  4)16进制整型常量
         //以0x开头
    0x438fa;
         //这是一个16进制的整数 

2)实型常量

实型常量的书写

         //1)单精度的常量
         //以f结尾
    2.3f; //表示单精度的小数  占用4个字节    
         //2)双精度的常量
    2.3;  //计算机中默认的以双精度的形式表示一个小数

3)字符型常量

字符型常量的表示

        //用单引号('')括起来的单个字符,里面可以是字符、数字、符号、就是表示字符常量    
    'a';//1
    '*';
    '&';  //都是字符常量    
    //'ab'; //不合法的    
        //特殊的字符常量(转义字符)
    '\n';
    '\t';
    '\\';
    '\r';  //这也都是字符常量(特殊的字符常量,是转义字符)

4)字符串常量

字符串常量的表示

        //用双引号括起来,里面可以是字符、数字、符号
    "abc";  //a b c \0
    "a";  //a \0   2
    "**";
    " ";  //包含一个空格
    "";   //空字符串,什么东西都没有
4、定义常量的方法(后补)

三、变量

1、变量的概念

顾名思义,变量就是在使用过程中可以变化的量。然而,变量的本质是代表内存的一个空间,用来存放经常变化的数据

变量的表示有两个要素:1)变量的类型;2)变量名称:变量的名称是我们操作变量的依据

2、变量的使用

1)定义一个变量

   格式1: 变量的类型  变量的名称

          int a;  //定义了一个 int 类型(4个字节)的变量,变量名是a
          char ch; //定义了一个char 类型的变量,变量名是ch
          float f;
   格式2:变量类型  变量名1,变量名2,变量名3(用于一次性定义多个变量)
          int a,b,c,d; 
          //定义了4个int类型的变量,变量名分别为a,b,c,d
   变量名的命名规范:a.严格遵守标识符的命名规范; b.变量名不能同名(某些情况下可以)

2)变量的初始化

变量初始化的原因

    //定义了一个int整型的变量a
    int a;
    //此时a有没有值?有值
    //值的可能性:1)系统的数据  2)上一个程序遗留的数据   3)垃圾数    
    //因为变量定以后,是有值得,为了防止变量的原来的值对我们的程序产生影响,我要初始化
    //初始化:给变量赋初值
初始化的方法一:定义的同时进行初始化
            格式1(完全初始化):  变量名= 变量值
             int num1=0,num2=0;  //定义了两个 int 类型的变量,变量名称为num1和num2
                                 //num1的值是 0  num2 的值也是0
            格式2(部分初始化): 
             int num3=0,num4;   //定义了两个 int 类型的变量,
                                //num3 的值 是0  num4的值我们也不知道
初始化的方法二:先定义变量,后初始化

            int num5,num6;    
             //给num5初始化
             num5 = 0;    
             //给num6初始化
             num6 = 0;</span></span>
初始化的方法三:使用一个变量,初始化另外一个变量
             int num7 = num5;  //用num5的值给num7进行初始化
初始化的方法四:给变量连续初始化
             int num8,num9,num10;
             num8 = num9 = num10=10;  //给num8 num9 num10都赋值为10;

3)变量的使用:存值和取值

    int a;   //0  nil null 其他
    a = 0;   //0
    printf("a = %d",a);     
    a = 23;  //23   设置a的值    
    int num11 = a;  //a 23  num11 23 ,先取出a的值23,再赋值给num11

4)变量的使用注意

  • 等号的左侧必须是一个变量
  • 等号的右侧可以是变量、常量、表达式

  • 等号的左侧一定不能写一个常量

3、变量的作用域

作用域可以理解为变量可以使用的范围

变量按照作用域分类:局部变量和全局变量

1)局部变量

函数的内部或者代码块的内部定义的变量,都称之为局部变量

代码块:

      {
           代码块语句;
      } 
      { 
           代码块2 
      }             
      <span style="font-family:SimSun;">//</span>代码块是可以嵌套的 
      { 
           代码块语句
             {
              代码块语句
             }
      }
局部变量的作用域:从局部变量定义的位置开始,到它所在的代码块或者函数体的“}”为止。 值得注意的是,在代码块的内部可以定义和块外部同名的变量,块内部的会暂时屏蔽(外部的不起作用)块外部的变量的作用域。另外,局部变量的概念是相对的,即同一个变量,相对于上一级的代码块是局部变量,但相对于次一级的代码块就是全局变量了。

2)全局变量

在函数的外部定义的变量是全局变量

全局变量的作用域:从定义的位置开始,到文件末尾,在不同的函数中都可以使用

//定义一个全局变量
float score = 59.9f;

int main(int argc, const char * argv[]) {
    
    //定义局部变量
    //注意 age 和 age1都是局部变量
    int age;
    printf("age = %d\n",age);//0
    
    //下面是一个代码块
    {
        //定义了另外一个局部变量age1 值是 10
        int age1 = 10;
        printf("age1 = %d\n",age1);  //10
        //age 等于100,访问代码块外部的age
        age = 100;
        printf("age = %d\n",age);  //100
        
        //在代码块的内部可以定义和代码块外部同名的变量
        int age = 1;
        printf("age = %d\n",age);  //1
        
    }  //代码块结束
    
    //printf("age1 = %d",age1);  //错误的,age1已经释放了
    printf("age = %d\n",age); //100 1 ?
    
    
    //使用全局变量 score
    printf("test:main = %f\n",score);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值