c语言中是没有bool类型的 一:bool 类型是一种数据类型 取值范围只有true(真) 和false(假) Bool类型的变量在内存中只占一个字节(注意是bool类型的变量,因为本身类型是不占内存的) 定义:不论是c 还是c++,定义变量都是类型名加变量名: bool is _live; 注意事项:虽然BOOL类型的取值范围只有true 和false 等,但是也是可以赋什么表达式之类的,bool类型的赋值不仅只可以是true和false,但是要记住非0为真 用代码解释一下: #include<stdio.h> int main() { bool is_Live = true;//非0为真,0为假,那么多非0,这里统一用1表示真 printf("%d\n", is_Live); is_Live = false; printf("%s\n", is_Live ? "true" : "false"); printf("%d\n", sizeof(is_Live));//这里输出的字节数目是一字节,因为Bool类型的变量的字节数就是一 printf("%d\n", sizeof(bool))//这里输出的字节数目也是一字节,虽然这里测量的是bool,是一种类型,但是这里我们需要注意的是,这里系统会给出一个临时 //变量,是bool类型的变量,所以这里测量的还是bool类型的变量,也就是一字节 return 0; }
二:内联函数: 本质:内联函数本质上还是一个函数 存在的价值:以空间换取时间(内存膨胀):消耗巨大的内存,从而提升速度,减少程序运行的时间; 内存膨胀是在代码区膨胀,一般的函数:原来的代码存放在栈区,需要过程,然后调到代码区才可以执行,这样就会消耗一些时间,而内联函数的代码直接在代码区连续膨胀 占用内存,就不必再进行入栈和出栈了,这样就减少了时间,从而提高了速度,增大了效率
内联函数怎么用; 语法:inline 返回值类型 函数名 (形参列表) { 函数体; }
代码:inline int getnum() { return 6; }
//这就是内联函数,函数调用还是一样的 特点:内联函数还是一个函数,只不过是内存膨胀的函数 哪些函数适合内联:短小精悍(函数要短,没有循环之类的,用的次数要多); //因为内存膨胀也需要占用空间,这就相当于是我们的成本,节约的时间就是我们的收益,那么我们应该实现的是收益大于成本,所以短小精悍的函数适合内联,因为短小 //说明所占用的空间少,那么我们付出的成本也少,精悍的是因为我们使用的次数多,一次节约一秒,用的越多,节约的时间也更多,量变产生质变。
三:函数重载:同一个项目中,可以有相同的函数名 函数重载的条件:函数名必须相同 参数表必须不同:(参数个数,对应位置的参数的类型) //也就是说除了函数名要一致,剩下的只要有一点点不同就是内联函数
************** 注意:返回值类型不考虑,内联函数的对象可以是两个及其以上;
四:函数参数缺省:传参数的时候可以少传,缺少的可以是实参 void test(int num, int val = 0); int main() { test(1, 2); test(5); return 0;
} //在形参列表直接初始化,但是只能缺省形参列表前面的,因为传参时是从前往后传的。形参列表不能是int num=3,int val; //可以这样记忆:参数是从前往后传递,那就从前往后缺省
五:引用;变量(对象)的别名 核心:引用和被引用的对象共享一段内存 语法:被引用的对象&引用名 = 被引用的对象; 举例子:int num = 9; int &val = num; 注意事项:必须初始化,比如给一个人起外号,这个外号只能对应他 这里的&是解析引用符 由于是取别名所以不会产生新的变量