4、数据类型介绍
数据:文本数据、音频、视频、图像、数字
C语言中有5大数据类型:基本类型、构造类型、空类型、指针类型、自定义类型
基本数据类型:
整型 长整型long int 整型int(4) 端整型short int
实型 单精度float(4) 双精度 double(8)
字符型 char(1)
内存:
1> 内存分配:4G存储大小:4*1024*1024*1024Byte; 内存的基本单元为一个字节(就是8bit)
2> 内存区域:栈 (存放局部变量)
堆 (存放动态分配的数据, 比如:类对象,函数malloc要求系统分
配的内存,动态分配的内存都需要程序要自己释放)
常量区 (存放常量)
代码区 (代码区:代码内的局部变量在这里分配内存)
全局变量区(静态区)
5、常量
固定不变的量
1)整型常量
2 0b开头 0b00001010;
8 0开头 012;
10 默认 10
16 0x 0xff01
2)实型常量
单精度:2.3f
双精度:4.5 (默认)
3)字符型常量
'a' ' ' '$' ' '(转义字符)
4)字符串常量
"abc" "a"
6、变量
在计算机中存储经常变量的数据
变量在内存中代表了一块内存区域
使用流程:
定义 ---- 初始化 ----使用
1)变量的定义:
int a;
int a,b,c;
变量定义完成以后,有值:
1)随机的 2)上一个程序在内存中驻留的 3)系统的
2)变量的初始化
1)先定义,后初始化
int a;
a = 10;
2)定义的同事进行初始化
int a = -1;
全部初始化:int a = -1,b=0;
部分初始化:int a,b = -1;
3)使用其他的变量初始化
int a = 0;
int b = a;
4)连续初始化
int a,b,c;
a = b = c =10;
3)变量的使用
int a =0;
int b;
b = a+10;
a = b;
4)变量名称遵守标识符的命名规则
7、变量的作用域
变量的使用范围
变量分:局部变量和全局变量
局部变量:函数或者代码块中定义的变量
作用域:从定义的位置开始向下 遇到 “}” 作用域结束
全局变量:在函数的外部定义的
作用域:从定义的地方开始,到当前文件结束
注意:
1)块的内部可以访问全局变量
2)在块的外部不能访问块内部的变量
3)块的内部可以定义和全局变量同名的变量(屏蔽)
为什么变量要初始化:
因为程序结束后,操作系统会释放内存,但是内存中得值还在,所以我们定义的变量有可能使用了上次系统释放的内存
8、printf函数
printf函数 标准的输出函数
输出的原理 : printf把要输出的内容--->输出缓冲区-->输出到控制台
格式:printf("格式说明",变量列表)
格式说明符:
%d 整型 %i 可以
%md %0md
%c 字符型
%f 实型 %e %g
%o 八进制
%p 地址
%x 16进制
9、scanf函数(阻塞式函数-等待用户的输入,如果不输入会一直等待)
C语言中标准的输入函数
接收用户从键盘上输入的内容
格式:scanf("格式控制",地址列表) 地址怎么来的? &-取地址符号
1)接受一个数字
int a=-1;
scanf("%d",&a);
注意:在输入字符之前 输入了 回车、tab制表、空格 ,都被忽略
scanf("%5d",&a); //%md m就是要获取的数据的位数
2)接受多个数字
3)接受的是数字和字符混合
4)scanf的运行原理 先输入到缓冲区,然后输出到控制台;
//接收多个数字的问题
// int a=-1,b=-1;
// scanf("%d%d",&a,&b);
// printf("a = %d,b = %d ",a,b);
//接受指定的位数的问题
// int a=-1;
// scanf("%5d",&a);
// printf("a = %d ",a);
//字符混和输入
// int a=-1;
// char ch;
// scanf("%d#%c",&a,&ch); //","是一个普通的分隔符 ,输入数据的时候也要用“,”分隔
//// scanf("%d%c",&a,&ch); //有问题的,涉及到scanf的运行原理,稍后讲
// printf("a = %d,ch = %c ",a,ch);
//关于 问题 ,
// int a= -1;
// scanf("%d ",&a); // 换行符,尽量避免这种写法
// printf("a = %d",a,b);
int a=-1,b=-1;
char ch;
char c;
scanf("%d",&a); //接收三个内容,格式: 12 b 34
scanf("%c",&ch); //空格
scanf("%c",&ch); //b
scanf("%c",&c); //空格
scanf("%d",&b); //34
printf("a = %d,ch = %c,b = %d ",a,ch,b);