c语言的编译
cd desktop
cc(-c||-o) 目标文件.c||o cc 目标文件1.c 目标文件2.c
./a.out
1。全局变量 staic 静态存储区
局部变量 auto 栈区
register 硬件寄存器 速度最快 寄存器变量只限于int char 和 指针类型变量的使用
2.全局变量与局部变量取最近变量为原则
全局变量可多次定义是没有问题的,代表同一个值
extern修饰的函数是外部函数,是默认的
static 修饰的是内部函数 只限当前函数调用
3.int a 声明变量为全局变量
static int a 声明变量为局部变量
extern int a 声明变量已定义
3.结构体可以包含别的结构体变量
结构体不允许对结构体递归调用
结构体占用的空间是其成员所占空间的总和
4.结构体 struct
枚举 enum
取别名 typedef 函数重名 数据类型重名
(1).typedef+struct 给结构体定义别名
typedef struct MyPoint{
float x;
float y;
}
MyPoint Point; struct MyPoint(原本定义方式) typedef char* String
(2).typedef struct MyPoint{
float x;
float y;
}Point;
(3).typedef struct{
float x;
float y;
}Point1,Point2;
枚举类似,enum Weather{
sum,
rainy,
haze
};
enum Wether weather=haze; 或 enum Wether weather=2; 默认值从0开始
5.union 关键字的用法与struct 的用法非常类似。
union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址.
6.volatile
编辑
就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
但多线程访问时可能值发生变化
7.c语言数据类型
指针类型 void *p
空类型 void
基本数据类型 int float double char
构造类型 struct union enum
8.c语言提供了4种最常用的基本数据类型
char 一个字节
int 四个字节
float 四个字节
double 八个字节
9.常用输出格式
整型 int %d
长整型 long %ld
字符型 char %c
浮点型 float %f
双精度型 double %f
指针型 地址 %p
字符串 char a[10];
printf %s a
scanf %s a
修饰 short短型 long 长型 signed 有符号型 unsigned 无符号型
10.Byte,short,char->int->long->float->double 小的变大的
容量大的数据类型转换成容量小的数据类型,需要强制转换
列:int i=(int)10.7
11.%:取余 /:取整(基于整形的话)
12.扩展赋值运算符
a+=4;——>a=a+4 其余类似
a=++i 先赋值i再++ a=i++ i先++再赋值
12. scanf("%d",&a);
printf("%d",a);
13.函数指针与别名
//int (*p)(int, int)=sum;
//typedef int(*MySum)(int,int);
MySum p=sum;
14.scanf不能输出打印字符串
cd desktop
cc(-c||-o) 目标文件.c||o cc 目标文件1.c 目标文件2.c
./a.out
1。全局变量 staic 静态存储区
局部变量 auto 栈区
register 硬件寄存器 速度最快 寄存器变量只限于int char 和 指针类型变量的使用
2.全局变量与局部变量取最近变量为原则
全局变量可多次定义是没有问题的,代表同一个值
extern修饰的函数是外部函数,是默认的
static 修饰的是内部函数 只限当前函数调用
3.int a 声明变量为全局变量
static int a 声明变量为局部变量
extern int a 声明变量已定义
3.结构体可以包含别的结构体变量
结构体不允许对结构体递归调用
结构体占用的空间是其成员所占空间的总和
4.结构体 struct
枚举 enum
取别名 typedef 函数重名 数据类型重名
(1).typedef+struct 给结构体定义别名
typedef struct MyPoint{
float x;
float y;
}
MyPoint Point; struct MyPoint(原本定义方式) typedef char* String
(2).typedef struct MyPoint{
float x;
float y;
}Point;
(3).typedef struct{
float x;
float y;
}Point1,Point2;
枚举类似,enum Weather{
sum,
rainy,
haze
};
enum Wether weather=haze; 或 enum Wether weather=2; 默认值从0开始
5.union 关键字的用法与struct 的用法非常类似。
union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址.
6.volatile
编辑
就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
但多线程访问时可能值发生变化
7.c语言数据类型
指针类型 void *p
空类型 void
基本数据类型 int float double char
构造类型 struct union enum
8.c语言提供了4种最常用的基本数据类型
char 一个字节
int 四个字节
float 四个字节
double 八个字节
9.常用输出格式
整型 int %d
长整型 long %ld
字符型 char %c
浮点型 float %f
双精度型 double %f
指针型 地址 %p
字符串 char a[10];
printf %s a
scanf %s a
修饰 short短型 long 长型 signed 有符号型 unsigned 无符号型
10.Byte,short,char->int->long->float->double 小的变大的
容量大的数据类型转换成容量小的数据类型,需要强制转换
列:int i=(int)10.7
11.%:取余 /:取整(基于整形的话)
12.扩展赋值运算符
a+=4;——>a=a+4 其余类似
a=++i 先赋值i再++ a=i++ i先++再赋值
12. scanf("%d",&a);
printf("%d",a);
13.函数指针与别名
//int (*p)(int, int)=sum;
//typedef int(*MySum)(int,int);
MySum p=sum;
14.scanf不能输出打印字符串