system函数
位于stdio.h,用于调用系统的函数;1
2
3
4// 停止当前函数
system("pause"); // 等价(等待输入):getchar();
// 调出windows绘图软件
system("mspaint");
头文件
头文件中声明了函数,但是并没有函数体,相当于Java的接口;
#include<stdio.h>
不同的系统平台对C的头文件中的函数有不同的实现(.so库),在编译时,会去找到当前系统的对该
头文件中对该函数的实现,替换到对应位置;
正是由于C的这个特点,即使是不同的头文件也不能有同名的函数,否则将编译失败!
占位符
1 | int、short %d |
基础函数
- sizeof(int/char) 输出类型的所占用的字节数;
typedef 定义别名
别名的作用能让变量定义的含义更加清晰,可以根据不同的环境,定义不同的别名;
比如typedef int jint 这样定义jni专用的int
1 | typedef int Age; |
为int定义别名,可以起到定义变量名的作用;
typedef另一个重要的作用,就是能够简化变量的声明,比如对结构体:
1 | // 定义结构体和指针的别名 |
联合体(共用体)
多种不同类型的变量共用一段内存,之间会相互覆盖,也就是说,同一个联合体中只能有一个成员是
有效的。
联合体的大小以占用内存最大的成员为准;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19union MyUnion{
int x;
long y;
};
void main(){
union MyUnion mu = { 10 };
printf("%d\n",mu.x);
mu.x = 10;
// 最后一次赋值才是有效的
mu.y = 10000000;
printf("%d\n", mu.x);
printf("%ld\n", mu.y);
system("pause");
}
联体可以用来模拟Java中的object效果,有时候传参,并不能确定具体的类型,此时通过联合体,
定义多种的数据类型,可以接收任意类型的参数;
1 | typedef union jvalue{ |
枚举
枚举中每一种类型都有对应的整型数值;1
2
3
4
5
6
7
8
9
10
11
12
13enum Day{
Mon=1,
Tue,
Wed,
Thu,
Fri
};
void main(){
enum Day d = Thu;
printf("%#x,%d\n", &d, d);
system("pause");
}