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