scanf
由scanf引出一个题目
怎么用scanf来进行回答??
我们可以先补充一个知识点
scanf函数中% 意为截取前几位
通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0
typedef
关键字:typedef
(类型定义,理解为类型重命名)————>可以引喻为取小名
如把 typedef unsigned int uint就是把 unsigned int ——>uint
static
关键字:static
①修饰局部变量——静态局部变量
②修饰全局变量
③修饰函数
一、修饰局部变量——静态局部变量
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
得到结果是: 2222222222
由于a是局部变量,变量a在test()函数内创建,出来时候就销毁了
而当我用static修饰后
void test()
{
static int a = 1;
a++;
printf("%d", a);
}
int main()
{
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
用static修饰后,a不会出去被销毁,而会保存下来
得到结果是: 234567891011
static修饰局部变量时,局部变量出了作用域,不被销毁
本质上,static在修饰局部变量的时候,改变了变量的存储位置
实质:存储位置的改变主要是影响了变量的生命周期
二、修饰全局变量
三、修饰函数
函数具有外部衔接属性
define定义常量和宏
define不是关键字,是预处理指令
#include<stdio.h>
#define ADD(x,y) ((x)+(y))
int main()
{
int a = 10;
int b = 20;
int c = ADD(a, b);
printf("%d\n", c);
return 0;
}
其上,ADD是宏名,(x,y)是宏的参数,参数是无类型,((x)+(y))是宏体。
宏是用来完成替换的,int c=((a)+(b))
也可以用到define来定义常量——>标识符常量