C++ Primer 第六章 函数
来源:互联网 发布:单片机温度计原理图 编辑:程序博客网 时间:2024/05/16 09:42
- 函数有的输入参数是形参,实参是形参的初始值,实参类型必须和形参类型匹配。int main(void)显示定义没有形参。形参作用域是函数块内。形参初始化的机理与变量初始化一样
- 传递指针对象,也是进行指针的拷贝,形参数值改变不会影响实参指针的值,但是改变形参所指对象会改变实参所指对象。传递参数实际就是实参拷贝给形参的过程。形参本身数值改变都不会影响实参的数值。
void func(int *ptr){ *ptr = 0;//将实参所指对象清0,影响实参所指对象 ptr = NULL;//形参可以请NULL,并不会形象实参}void main(void){ int a = 10; func(&a);//这里仅仅将a的地址拷贝给了ptr。}
- 传引用参数是C++特有,可以说明一下。拷贝大的类型效率低下。可以通过引用形参访问类型。
bool isShorter(const string &s1 , const string &s2){ return (s1.size() < s2.size() );}//无需修改实参的数据,使用了const,并且这个无需拷贝,速度效率更加快。
- 可以和指针类似,通过引用参数返回额外的信息,和指针类似,因为两者都可以通过指向,直接修改实参的数值,很聪明。利用c语言指针和c++引用返回一个字符串某一个字符个数和第一个的下标
//c语言指针版本,利用指针。int find_char(char *s , char c , int *cnt){ int ret = 0; char *sbuf = s; while(*s != '\0'){ if(*s++ == c){ (*cnt)++; if(*cnt == 1) ret = s - sbuf; } } return ret;}int main(int argc , char *argv[]){ int cnt = 0; int ret; ret = find_char(argv[1] , 'u' , &cnt); printf("%d %d\n" , cnt , ret);}
./C++Debug/Cplusplus wangufdfeunfdgf
2 5
//C++版本,利用引用string::size_type find_char(const string &s , char c , string::size_type &cnt)//引用类似与指针{ string::size_type ret; for(decltype(s.size()) i =0 ; i != s.size() ; ++i) { if(s[i] == c){//这里用引用可以避免大量复制,用const声明为了防止错误改变实参. cnt++;//这里用引用可以提供类似与指针的功能 if(cnt == 1) ret = i; } } return ret;}int main(int argc , char *argv[]){ string::size_type ret = 0;//类里面所定义的独立类型。 string::size_type cnt = 0;//类里面所定义的独立类型。 string s = "wangjunununjfd"; ret = find_char(s , 'u' , cnt);//注意参数传递的方法,就是直接传递进去。 cout << cnt << endl; cout << ret << endl; exit(0);}
未完待续。。。。。
阅读全文
0 0
- c++primer第六章函数小结-6
- C++primer——第六章 函数
- C++Primer第五版【笔记】——第六章 函数
- C++primer(第五版)第六章函数学习笔记
- 《C++primer(第五版)》学习之路-第六章:函数
- C++primer第五版笔记-第六章函数
- 《c++ primer》第六章 函数
- 第六章 函数 primer c++
- C++ Primer 第六章 函数
- C Primer Plus 第六章
- C++PRIMER第六章练习
- C++Primer习题第六章
- [C++ primer]第六章笔记-函数
- 【c++ primer 笔记】第六章 函数
- c++ primer概念整理第六章 函数
- C++primer 第六章学习小记
- 第六章答案 c primer plus
- C++primer读书笔记(第六,七章)
- java中设置定时任务用Timer类可以实现
- python 使用urllib2发送get请求和post请求
- jsp页面string转date并格式化
- Qt基础(二)编写Qt多窗口程序遇到的问题
- PHP XML操作类 xml2array -- 含节点属性
- C++ Primer 第六章 函数
- H5唤醒Activity
- [dp] Codeforces 429B B. Working out(动态规划(DP))
- hdu 4757 Tree(可持久化字典树)
- WOJ1078-Emotional Rate
- Tensorflow(一)
- yii2.0 基于ActiveRecord 封装的curd操作
- TabLayout 字体个数不同 大小不同
- SSM--基础构建