常见关键字
- auto 声明变量的生存周期为自动,所声明的变量默认为int
int main()
{
auto a=10;//设定a为int
auto a=10.9;//设定b为int
}
-
break 跳出当前循环;只能结束一层循环
-
continue 代表结束本趟循环;跳出当前循环,且进行下一次循环(与break相对)
-
case 用在switch(和if一样都是选择语句)中
case与switch结合构成判断语句,每一个case之后一般需要一个break(若没有break,则会一直向下执行)
int main()
{
int i=0;
scantf("%d",&i);
switch(i)
{
case 1:
printf("1\n");
break;//如果没有break的话输入1则会将printf(“2\n”);中的2也输出
case 2:
printf("2\n");
break;//
}
switch(i) i为switch需要判断的数字
- default 和case一起用在switch里面
- const 定义常量(定义时初始化)
- goto 跳转到某一条标签标识的语句
register int a=10;//建议编译器把a放在寄存器
register 寄存器
- void 无类型
- static 静态的存储说明符
- extern 声明外部符号 存储说明符
存储说明符:auto\extern\static\register
- 关键字 typedef 类型重命名,类型定义,针对一些复杂的类型
- typedef unsigned int(复杂类型)u_int(重命名)
typedef int arr[10];// 加上typedef 他就会由变量变为对应的类型,类型为int [10] arr
关键字static
static:
- 修饰局部变量——>提升局部变量的生存周期(让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束)
- 修饰全局变量——>作用域被限制到当前的源文件当中(使全局变量只能在本源文件内使用,不能在其他源文件内使用)
- 修饰函数——>作用域被限制到当前的源文件当中(使这个函数只能在本源文件内使用,不能在其他源文件内使用)
define定义常量和宏
#define _CRT_SECURE_NO_WARNINGS 1//定义关键字
#include<stdio.h>
#define SIZE 10//定义了一个标识符常量
#define STR "HELLO"
//#define LOOP for(;;){printf("hellobie\n");}//for第二个语句没有时,for为死循环
#define LOOP for(;;)\
{
printf("hellobit\n");
}
//续行符
#define _CRT_SECURE_NO_WARNINGS 1//定义关键字
#define SIZE 10//定义了一个标识符常量
#define ADD(x,y) ((x)+(y))
//定义一个宏——>宏是有参数的,宏是有副作用的
//注意问题:x和y可能是一个表达式,所以必须要给单独每个参数加括号
//x和y可能是一个表达式,所以必须要给单独每个参数加括号
int ADD(int a, int b)
{
return a + b;
}
int main()
{
int result = 2 * ADD(10, 20);//x+y=10+20
//2*10+20
printf("%d\n", result);
return 0;
}
#define ADD(x,y) ((x)+(y))//定义一个宏——>宏是有参数的,宏是有副作用的
//注意问题:x和y可能是一个表达式,所以必须要给单独每个参数加括号,为了避免宏在函数内的运算出现逻辑错误,需要在宏的外面在加一层括号,eg:((x)+(y))
补充:
宏可以对替代的东西重新命名一个东西
宏最有价值的地方是:
1.在编译的时候宏本身会被所替代点的东西替换掉
2.一般在写代码时,在代码中出现的100,200这样的整数一般不要直接写数字,一般定义一个宏
指针
内存:
大端:低地址存放 高数据
小端:低地址存放 低数据
编译器VS 小端 计算机
int main()
{
int a = 10;
int *p = &a;//p中存放着a的地址,*证明p是一个指针
//地址存放在对应类型的指针当中
*p = 88;//间接访问符——>解引用
printf("%d\n", &a);//输出a为88
int **pp = &p;//pp中存放着p的地址
**pp = 99;
printf("%p\n", &a);//打印变量的地址 十六进制显示
printf("%d\n", &a);//每次运行程序,变量的地址是不确定的
system("pause");
return 0;
}
//windoes+r ->calc 计算器
指针变量的大小
//任何类型的指针 大小都为4
//指针变量里面存放的就是地址 int a=10
//int *p=&a; 十六进制的数字 4 32位下 但是64位下 8
int main()
{
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(char));//1——>4
printf("%d\n", sizeof(double));//8——>4
printf("%d\n", sizeof(short));//2——>4
return 0;
}
结构体
结构体:一种类型,聚合类型
数组特征:对他进行整体初始化,只有一次机会,在定义的同时。
struct Tag
{
成员列表
};
//一个汉字——>两个字节
struct Student
{
char name[20];
char sex[4];
int age;
};
//stu2={“gaobo”,男,18};
int main()
{
struct Student stu1 = { "zhangsan","男",18 };
printf("%s,%s,%d\n", stu1.name, stu1.sex, stu1.age);
//stu2={“gaobo”,男,18};//error
//int a = 1;
system("pause");
return 0;
}