1.数据类型
windows64位下:
char //字符数据类型 (1字节)
short //短整型 (1字节)
int //整形 (4字节)
long //长整型 (4字节)
long long //更长的整形 (8字节)
float //单精度浮点数 (4字节)
double //双精度浮点数 (8字节)
2.常量变量
变量的定义方法:
int a=10; float b=45.5; char c=‘w’;
变量的分类:
1.全局变量 2.局部变量
#include<stdio.h>
int a = 10;//全局变量
int main()
{
int c = 4;//局部变量
int b = 5;//局部变量
printf("b=%d\n", b);
system("pause");
return 0;
}
局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
全局变量的生命周期是:整个程序的生命周期
常量:
1.字符常量 2.const修饰的常量 3.#define定义的标识符常量
4.枚举常量
enum sex
{
wo,
shi,
};
int main()
{
4;//字面常量
5.3;
const float c = 3.14f;//const修饰的常量
#define MAX 100 //#define的标识符常量
system("pause");
return 0;
}
3.字符串+转义字符+注释
字符串:由双引号引起来的一串字符。
字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
转义字符:
注释:
c语言注释:/* */ 不能嵌套注释
c++注释: //
数组:
int array[5]={1,2,3,4,5}; //定义一个数组,最多放5个元素
int i = 0;
int array[4] = { 1, 2, 3, 4 };
for (i = 0; i < 4; i++)
{
printf("%d\n", array[i]);
}
操作符
算术操作符:+ - * / %
移位操作符:>> <<
位操作符:& ^ |
赋值操作符:= += -= *= /= &= ^= |= >>= <<=
单目操作符:
逻辑操作符:&& 逻辑与 || 逻辑或
条件操作符:exp1?exp2:exp3
下标引用:[] () . ->
常见关键字
typedef 类型重命名
static
1.修饰局部变量–静态局部变量
2.修饰全局变量–静态全局变量
3.修饰函数–静态函数
static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
一个全局变量被static修饰,使得这个全局变量只能在本文件中使用,不能在其他源文件中使用。
一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
#define定义常量和宏
#define MAX 100
#define add(x,y)(x+y)
int main()
{
int sum = add(2, 3);
printf("sum=%d\n", sum);
system("pause");
return 0;
}
指针
取出变量地址
int main()
{
int a = 10;
&a;
printf("%p\n", &a);
return 0;
}
地址的存储,需要定义指针变量
int a=10;
int *p;
p=&a ;
指针变量的大小:指针大小在32位平台是4个字节,64位平台是8个字节。
结构体
struct Stu
{
char name[20];
int age;
char sex[5];
char id[5];
};
结构体初始化
int main()
{
struct Stu s = { "王帆",22, "男","2827" };
printf("name=%s age=%d sex=%s id=%s\n", s.name, s.age, s.sex, s.id);
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps->id);
system("pause");
return 0;
}
分支语句与循环语句
if语句
int main()
{
int a=0;
scanf("%d",&a);
if (a == 1)
{
printf("加油\n");
}
else
printf("放弃\n");
system("pause");
return 0;
}
switch语句
int main()
{
int day = 0;
scanf("%d",&day);
switch (day)
{
case 1:
printf("周一\n");
break;
case 2:
printf("周二\n");
break;
case 3:
printf("周三\n");
break;
case 4:
printf("周四\n");
break;
case 5:
printf("周五\n");
break;
case 6:
printf("周六\n");
break;
case 7:
printf("周天\n");
break;
}
default:
break;
system("pause");
return 0;
}
当所有case 都不满足,就会执行default语句
while语句
int a = 0;
while (a < 4)
{
a++;
printf("%d\n", a);
}
在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久
终止循环的。
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。
for语句
i
nt i = 0;
for (i = 1; i < 10; i++)
{
printf(" %d" , i);
}
函数
c语言库函数:
使用库函数必须包含对应的头文件
自定义函数
自定义函数和库函数一样,有函数名,返回值类型和函数参数
函数的组成:返回类型 函数名 函数参数
函数的参数
实参:真实传给函数的参数,实参可以是:常量,变量,表达式,函数
形参:形参指函数名后括号中的变量,形参当函数调用完后,自动销毁,只在函数中有效
函数的声明和定义
test.h 放置函数的声明
test.c 放置函数的实现
函数递归
递归的两个必要条件:
存在限制条件,当满足这个限制条件的时候,递归便不再继续
每次递归调用之后越来越接近这个限制条件。
void print(int a)
{
if (a > 9)
{
print(a / 10);
}
printf(" %d\n", a % 10);
}
int main()
{
int a = 567;
print(a);
system("pause");
return 0;
}