🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 函数参数 ~~~ int func(void) { cout << "func" << endl; return 1; } int main() { func(111, 222); getchar(); return 0; } ~~~ 以上c代码c编译器编译可通过,c++编译器无法编译通过。 ![](https://box.kancloud.cn/7bd62ad381dd7cc0c626c7467452a448_754x215.png) # struct类型增强 * c中定义结构体变量需要加上struct关键字,c++不需要。 * c中的结构体只能定义成员变量,不能定义成员函数。c++即可以定义成员变量,也可以定义成员函数 ~~~ //1. 结构体中即可以定义成员变量,也可以定义成员函数 struct Student{ string mName; int mAge; void setName(string name){ mName = name; } void setAge(int age){ mAge = age; } void showStudent(){ cout << "Name:" << mName << " Age:" << mAge << endl; } }; //2. c++中定义结构体变量不需要加struct关键字 void test01(){ Student student; student.setName("John"); student.setAge(20); student.showStudent(); } ~~~ # 新增bool类型关键字 标准c++的bool类型有两种内建的常量true(转换为整数1)和false(转换为整数0)表示状态。这三个名字都是关键字。 * bool类型只有两个值,true(1值),false(0值) * bool类型占1个字节大小 * 给bool类型赋值时,非0值会自动转换为true(1),0值会自动转换false(0) ~~~ int main() { cout << sizeof(false) << endl; bool flag = true; flag = 100; cout << flag << endl; getchar(); return 0; } ~~~ [c语言中的bool类型] c语言中也有bool类型,在c99标准之前是没有bool关键字,c99标准已经有bool类型,包含头文件stdbool.h,就可以使用和c++一样的bool类型 # 三目运算符功能增强 * c语言三目运算表达式返回值为数据值,为右值,不能赋值。 ~~~ int a = 10; int b = 20; printf("ret:%d\n", a > b ? a : b); //思考一个问题,(a > b ? a : b) 三目运算表达式返回的是什么? //(a > b ? a : b) = 100; //返回的是右值 ~~~ * c++语言三目运算表达式返回值为变量本身(引用),为左值,可以赋值。 ~~~ int a = 10; int b = 20; printf("ret:%d\n", a > b ? a : b); //思考一个问题,(a > b ? a : b) 三目运算表达式返回的是什么? cout << "b:" << b << endl; //返回的是左值,变量的引用 (a > b ? a : b) = 100;//返回的是左值,变量的引用 cout << "b:" << b << endl; ~~~ [左值和右值概念] 在c++中可以放在赋值操作符左边的是左值,可以放到赋值操作符右面的是右值。 有些变量即可以当左值,也可以当右值。 左值为Lvalue,L代表Location,表示内存可以寻址,可以赋值。 右值为Rvalue,R代表Read,就是可以知道它的值。 比如:int temp = 10; temp在内存中有地址,10没有,但是可以Read到它的值。