目录
关键字
1.C语言提供的关键字,不能自己创建关键字
2.变量名不能是关键字‘
-extern 声明外部符号
-register int num = 100;//建议将num存放到寄存器中(计算机中数据可以存储到网盘,硬盘 内存,高速缓存,寄存器 这几个存储大小从大到小,但是依次造价越高,速度越快)
-signed 有符号的,
-union 联合体(共用体)
-typedef 类型重定义> unsighed int u_int>输入u_int 即相当于输入了 unsighed int
-static 静态的,1.修饰局部变量 2.修饰全局变量 3.修饰函数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main()
{
//register int num = 100;//建议将num存放到寄存器中
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
此时输出10个2,
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void test()
{
static int a = 1;
a++;
printf("%d", a);
}
int main()
{
//register int num = 100;//建议将num存放到寄存器中
int i = 0;
while (i < 10)
{
test();
i++;
}
return 0;
}
则会打印出234567891011 (static 修饰a时,每次在出他的范围外后重新进入范围时,不再被销毁,而是保留重新被赋予的值,意味着static修饰的局部变量,可以使得局部变量生命周期变长)
static修饰全局变量时,使得这个全局变量只能在自己所在源文件内部使用,其他源文件不可使用。 (全局变量可以在其他源文件内部使用,是因为全局变量具有外部链接属性)
static 修饰全局函数也是同理
define 和 include 不是关键字,而是预处理指令。
常量和宏
define 1.定义常量 2.定义宏
define定义宏是用替换的方式,如图得到4*2+3 即11
若要得到20 则需要#define ADD(X,Y) ((X)+(Y))
指针
引入:内存
指针的含义
#include<stdio.h>
int main()
{
int a = 10;//内存中分配4个字节
printf("%p\n", &a);//%p是专门用来打印地址的
int * pa = &a;//pa是用来存放地址的,在C语言中pa叫是指针变量
//*说明pa是指针变量
//int说明pa执行的对象是int类型的
char ch = 'w';
char* pc = &ch;
return 0;
}
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;
*pa = 20;//*pa解引用操作 *pa就是通过pa里边的地址,找到a
printf("%d\n", a);
return 0;
}
即是通过找地址的方式重新赋予a的值
指针变量即是用来存放别人地址的,通过解引用符找到操作对象进行操作。
指针的大小
指针大小是相同的的!
指针是用来地址的,指针需要多大空间,取决于地址的存储需要多大空间
32位-32bit-4byte
64位-64bit-8byte
结构体
用于使C语言有描述复杂对象的能力(创建新的类型)
#include<stdio.h>
//创建学生类型
struct stu
{
char name[20];
int age;
double score;
};
};
int main()
{
struct stu s = { "张三",20,85.5 };//结构体的创建和初始化
printf("1:%s %d %f\n", s.name, s.age, s.score);//结构体变量.成员变量
struct stu* ps = &s;
printf("2:%s %d %1f\n", (*ps).name, (*ps).age, (*ps).score);
printf("3:%s %d %1f\n", ps->name, ps->age, ps->score);
return 0;
}
结构体指针->成员变量