一.基本命令
1.编译命令:(生成.o文件)
cc -c filename.c
2.链接命令:(生成.exe文件)
cc filename1.o filename2.o filename3.o
cc -o 自定义文件名 filename.o
3.运行命令:
./filename //其中./表示当前目录
二.指针
1.指针的定义:(*说明后面是指针变量)
int a=10;
int *p1 = &a; //指向数值的指针
int **p2=&p1; //指向指针的指针
2.指针运算符:(*是指针运算符,访问指针指向的变量值)
*p1 =9; //等价于a=9;
3.void *指针:(可以指向任意类型的指针)
int a = 10;
char *string = "name";
void *p1 = &a; //指向数值的指针
void *p2 = string; //指向字符串的指针
三. 内存:栈区、堆区、静态存储区
1.自动变量
auto修饰的局部变量,栈区,auto可省略。
执行是创建,执行完毕自动销毁。
2.静态变量
static修饰的变量,静态存储区,只初始化一次。
不会销毁,直至程序退出。
static int b = 0;
3.寄存器变量
register修饰的自动变量,硬件寄存器中。
只限于int,char,浮点型,指针类型变量使用。
函数结束时销毁。
四.其他相关
1.宏
//define 宏名 宏内容(后面不带分号)
#define PI 3.14
2.typedef
1>.宏定义后面不能加分号
2>.宏名一般是大写
3>.同名字符串不会被值替换
<pre name="code" class="plain">//带参数的宏,参数列表无需类型
#define 宏名(参数列表) 宏内容
//不带参数的宏
#defiine PI 3.14
3.结构体
//定义结构体,定义时不会分配内存
struct Student{
char *name;
int age;
float height;
};
//正确的初始化
struct Student S1 = {"Jake",22,1.78};
//错误的初始化(同数组)
struct Student S1;
S1 = {"Jake",22,1.78};
//定义一个结构体数组
struct Student Stus[2];
4.外部函数、内部函数
1>.外部函数
extern修饰,可省略,允许其他文件访问调用。
wx.h 文件1
int b;
task1.c 文件2
extern int b; //声明变量b在外部文件已定义
2>.内部函数
static修饰,被其他文件中的函数调用时,可编译通过,链接时会出错。只能在其定义所在的文件使用。
static修饰的全局变量只能在当前文件使用,是当前文件私有的全局变量。