一、存储类型
1、auto--自动类型(系统自动分配区域)
普通的局部栈变量,这种对象会自动创建和销毁
一般隐藏auto的存储类型为自动存储类型,程序大多都是这种自动变量
inti= 10;
(auto) int i= 10;
2、register--寄存器类型
特点:提高运行效率,cpu上的寄存器特别的少
register float pi = 3.14;
可能会申请失败,失败转为auto类型
3、extern
(1) extern 可以在一个文件中去扩展全局变量的作用域
(2)将全局变量的作用域扩展到其他文件
a.在一个文件中定义一个变量,在另一个文件中用 extern + 变量名 去使用它
int b = 2;
extern b;
b.在一个文件中用extern 修饰定义一个变量,在另一个文件中直接定义使用
extern int c = 3;
int c;
(3)extern 修饰函数,此函数就成为了外部函数,可供其他文件调用
在定义或申明中的一个地方用extern修饰就可以
4、static -- 静态类型
数据存放在全局数据区,但是作用域只能在本文件/本函数中使用
所以可以在两个不同的文件/函数同时声明同名的static变量,但是是两个不同的变量
(1) 修饰全局变量,将这个全局变量的作用域限制在本文件中
(2)修饰函数,将这个函数的作用域限制在本文件中
(3) 修饰局部变量,延长生命周期(有的系统是延长到程序结尾)
二、输入输出
1、格式输入输出函数
printf()
功能:技照指定的格式向显示器输出数据
格式:
printf("格式控制串”,输出表);
printf("m = %d\n",m);
%d -- int 十进制
%ld -- long
%ld -- long long
%x --十六进制
%o --八进制
%c -- 打印一个字符
%s -- 打印字符串
%p -- 打印地址
%f -- float
%lf -- double
%u -- unsigned int
%e -- 指数
%g -- 打印浮点型的数,只打印有效数字
scanf() -- 格式输入函数
功能:按照指定的格式从键盘读入数据,存入地址表中待定
格式: scanf("格式控制串",地址表);
scanf("%d",&m);
"*"符: 用以表示,该输入项,读入后不赋予相应的变量,即跳过该输入值
scanf("%d %*d %d",&a,&b);
如果输入1 2 3,把1赋值给a,2会跳过,3赋值给b
宽度: 用十进制整数指定输入的宽度(字符数)
scanf("%5d”,&a);
输入12345678,只会将12345赋值给a,后面的部分被截取
scanf("%4d%4d",&a ,&b);
输入12345678,会将1234赋值给a,后面的5678赋值给b
int a = 123;printf("%5d\n”,a);
123
注意:
1、遇到空格、tab、回车 代表结束
2、在格式控制串里有什么符号,就必须要输入什么符号
3、遇到非法输入也会结束
4、scanf函数没有精度控制
scanf("%5.2f",&a);非法的
不能企图用此语句来输入小数为2位的实数