一,c语言关键字
1.1static作用
1.1.1static修饰函数体中的局部变量
如下图中 void test 函数体中定义的局部变量“i”未被static所修饰,所以每当“i”执行完一次之后又被重新赋值为0,然后再i++,所以输出了10个1。在子函数直行完就释放了内存空间
2.如下图中 void test 函数体中定义的局部变量“i”被static所修饰,每次“i”执行完之后出了作用域依然存在,所以能保留上一次所加的值,直到程序结束,生命周期才结束。
1.1.2static修饰全局变量
- 如下图中,在test_2.c源文件中,定义一个“未被static”所修饰的全局变量add,然后在test.c(其他)源文件中可以正常输出。
- 如下图中,在test_2.c源文件中,定义一个“被static”所修饰的全局变量add,然后在test.c(其他)源文件中编译失败,无法正常输出。
1.1.3static修饰函数
1.如下图中,在test_2.c源文件中,定义一个“未被static”所修饰的函数Add,然后在test.c(其他)源文件中可以正常被调用且正常输出。
2.如下图中,在test_2.c源文件中,定义一个“被static”所修饰的函数Add,然后在test.c(其他)源文件中编译失败,无法被调用和输出
1.static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。静态全局变量在定义时如果不赋初值,会默认初始化为0(只在编译完成后初始化一次)
2.一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
3.一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。
注:static修饰的全局变量和函数,所修饰两者的作用是一样的
1.2 extern的作用
我在一个.c文件有个变量。在另一个文件 如何调用 ,我就告诉他 你只要在你的变量前面 加上extern 就可以了
extern是计算机语言中的一个关键字。可置于变量或者函数前。以表示变量或者函数的定义在别的文件中。提示编译器遇到此变量或函数时。在其它模块中寻找其定义。加extern的变量或者函数可以在其他函数中调用
1.3 union联合体的作用
定义的 联合体union的内存总大小=所有成员中内存最大的值
联合体union中能定义数组
不同于结构体,定义的结构体的内存总大小=所有成员所用内存的总和
结构体中不能定义数组
1.4数据类型的选择
机械角度为0~8191和温度无正负值用无符号类型
转速和转矩电流有正负值用有符号类型
1.5 if else结合和if if if结合
if 和else结合,由于else表示否则,所以在程序运行时if和else只会运行其中一个
if和if 结合 ,在程序运行时两个if都会运行,直到程序结束
二,指针的应用&&理解
好比底盘要每时每刻获取遥控器收到的数据变量,而如果我们把遥控器收到的数据变量的地址传给底盘,相当于我把遥控器收到的数据变量的房间钥匙给了底盘,这时底盘就能随时读取遥控器的数据