[置顶] 黑马程序员——C语言中的数据

时间:2022-09-20 00:24:55
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

一、数据

1、数据的概念

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

2、数据的类型

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

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

[置顶]        黑马程序员——C语言中的数据

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

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

[置顶]        黑马程序员——C语言中的数据

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

[置顶]        黑马程序员——C语言中的数据

二、常量

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);