-
1、inline作为内联函数的关键字,只是一种编译方式,在结果上没有什么改变;
2、函数重载必须在同一个作用域内;
3、有默认参数值的的参数必须放在默认表的最右端。
查看全部 -
一、函数参数默认值 1.有默认值参数值的参数必须在参数表的最右端 2.函数定义不写默认值,声明可写默认值 3.无实参则用默认值,否则实参覆盖默认值 二、函数重载 1.定义:在相同作用域内 用同一函数名定义的多个函数 参数个数和参数类型不同 2.思考:编译器如何识别重载的函数 三、内联函数 1.关键字:inline 2.内联编译是建议性的,又编译器决定 逻辑简单,调用频繁的函数建议使用内联 递归函数无法使用内联方式 inline 内联编译是建议性的,由编译器决定。逻辑简单,调用频繁的函数建议使用内联。递归函数无法使用内联方式。 总结 函数参数默认值 实参覆盖默认值。 函数重载 名称相同参数可变。 内联函数 效率高,由编译器决定是否使用 inline 函数名 for 和while循环不要用内联函数 递归函数无法使用内联方式 c++函数新特性: 声明函数参数默认值:有默认参数值的参数必须在参数表的最右端(从右向左左边的可有可无参数)如:void fun(int i,int j=5,int k)为错,(int i,int k,int j=5)为正确 函数在声明时可以写参数默认值,但是在定义时不要写默认值 函数在无实参时则用默认值,有实参时覆盖默认值 函数重载: 在相同作用域内,用同一个函数名定义多个函数,函数的参数个数或参数类型不同 重载好处:比如求最大值(有时候要求两个数的最大值,有时候三个数),根据参数及返回值的不同调用最合适的函数 内联函数:可以省掉2和4两个步骤的时间,定义内联函数inline 类型 函数名(参数) http://img1.sycdn.imooc.com/55864f5f0001f94612800720-120-68.jpg 内联函数只是建议性的,要不要内联由编译器决定 逻辑简单(不包含循环),调用频繁的函数建议使用内联 递归函数无法使用内联方式 如果函数形参有默认值,则参数列表中最右边的参数必须有默认值!!!! 在函数声明时可以有函数参数默认值,但是在函数定义的时候最好不要带默认值! 函数重载,表现在函数返回类型,形参类型、个数 内联函数,关键字inline,调用时相当于把函数代码在调用函数中展开,节省了调用时间和返回时间,效率高,但是注意递归函数无法作为内联函数。。。
查看全部 -
使用const关键字定义整型变量count,并定义指针p引用变量count。利用for循环打印count次Hello imooc
查看全部 -
(1)int const *p=&x,*p相当于常量,不可以通过*p给x赋值,但是*p既可以指向x,也可以指向y。 (2)int *const p=&x,此时p只能指向x,可给*p赋值。 (3)int const &z=x,此时z是常量。
查看全部 -
const(控制变量是否可以变化) const int x=3;(则此时x为常量,不可进行再赋值) const与指针类型 const int *p=NULL; int const *p=NULL;(两种写法完全等价) int *const p=NULL; const int *const p=NULL; int const *const p=NULL;(这两种写法也是完全等价的) int x=3; const int *p=&x; *p=4(错误,因为const指定的为*p);p=&y;(正确) int x=3; const int *const p=&x; p=&y(错误,因为const指向的为p,只能为x的地址) const与引用 int x=3;const int &y=x; y=10(错误,y通过const限定只能为x的别名,值为3) 总结: const int x=3;int *y=&x;(这种写法是错误的因为x本身定义为const,在用一个可变的指针指向,那么就有用指针改变x值得风险,这是系统所不允许的); int x=3; const int *y=&x;(正确,这样保证了指针对x只有可读性,而没有可写性)
查看全部 -
C 引用的作用和用法 我的总结:引用的好处之一就是在函数调用时在内存中不会生成副本。 引用总结 (1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。 (2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。 (3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。 (4)使用引用的时机。流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符
查看全部 -
&符号就是取地址符号, 含义只这么一个; *符号就是创建一个指针, 或者做一次地址跳转; 在任何编程语言中, 其实一个变量都代表了一个内存上的地址. int a = 10, 给a分配一个内存逻辑地址0x1001ff, 这个地址存放了值10; int &b = a, 给b分配和a一样的逻辑地址0x1001ff. 因此b就a的别名; 好了, 最难的来了. int a = 10; // 给a分配一个内存逻辑地址0x100001, 这个地址存放了值10; int *p = &a; //创建变量p, 给p分配地址0x100002, 这个地址存放的值是"0x100001"(a的逻辑地址值); int *&q = p; //创建变量q, 给q分配地址也是0x100002, 因此这个地址存放的值还是a的逻辑地址值; *q = 20; //访问存放在q变量地址下的值, 获得了a的地址值, 再访问一下a的地址值, 修改上面的内容为20; 至此, 我觉得我基本解释清楚了&的作用机理, 它就是取地址; 而*的含义是做一次地址跳转;
查看全部 -
引用VS指针、#define VS const、 函数默认值&函数重载、内存管理
查看全部 -
对引用进行改变,同时也改变了原来的值。
查看全部 -
可以加两个
查看全部 -
第三个就不一样了
查看全部 -
交换值的函数
查看全部 -
通过*q访问a
查看全部 -
引用结构体代码演示
查看全部 -
引用代码的演示
查看全部
举报