c++函数(努力在路上)
来源:互联网 发布:人工智能招聘信息 编辑:程序博客网 时间:2024/06/06 07:42
c++函数总结 基础(1)
我这个人不太会表述 ,说的不太严谨 ,有可能也说错了,大家见谅,这是我第一篇博客,我会认真的写,但是因为水平有限,有瑕疵见谅,希望我的总结会对学习c++这个神奇的语言的你,带来顿悟,废话不说 走起。(注:以下代码我会亲测有效才会发布,软件:Microsoft Visual Studio2012)
先写一个小程序:
(1)定义:
//包含两个变量的函数,返回值为double类型double ShowAllInfo(int i,double j){ double sum=0;//设置一个double类型的和 sum=i+j;//i自动转化为double类型完成求和 return sum;}
(2)写函数原型
double ShowAllInfo(int i,double j);//函数原型
(3)调用
double lmf=0;//定义一个相同类型的接住返回的值 lmf=ShowAllInfo(1,2.6); cout<<lmf;//输出
效果:
二.函数的各种使用格式与用途
描述:函数就是整个程序的灵魂,功能是啥实现的?函数!以前所学的基础数据类型,算法,各种技术最后都是用在函数上,我写到这的时候想到,还有类,他俩谁重要,最后总结出来,类的功能模块就是函数,函数是类的基础,成员函数来操作基础数据成员(类型),很多成员函数构成类,类来初始化对象,对象可以用来描述具体的事物,这样推出来,我们为什么写程序,以及函数在程序中的地位就一目了然了!**函数的各种格式的总结**(这里不写实现,只写单纯的原型)
void func1();//用途:输出信息void func2(int i);//传入一个参数用来处理void func3(int i,double b);//传入两个不同的参数来处理void func4(int *p,int n);//可以传入数组名,与长度void func5(int p[][4],int n);//二维数组 与前面空着的长度void func6(struct p,int n);//结构体按值传递void func7(struct &s,int n);//结构体按引用传递void func8(int &i);//单个参数按引用传递void func9(char *p,int n);//字符数组的传递void func10(char *(*p)[],int n);//指向指针的指针void func11(class p,int n);//类对象 按值传递void func12(class &s,int n);//类对象 按地址传递void func13(char *&p,int n);//数组引用传递void func14(const int *i);//不可以修改值,但是可以改 //变他指向的地址void func15(int const i*);//与上面的相反,可以改变值//,但是不可以改变他指向的地址void func16(const int const i);//既不可以改变他的值 也不可以改变他的地址
三.应用函数应该注意的事项
(1)参数的类型,实参应该与形参参数类型相同,才可以进行调用,可以根据形参的个数与形参的类型在函数名不发生变化的情况下重载函数,下面有讲到。
(2)注意调用的函数名一定要写对,函数的名字尽量起一些见名知义的,比如我第一个函数写的ShowAllInfo,大致意思是显示所有信息,很明显和我的功能求和不相符,这是一个教训,下面的我图方便起了一些鬼字母,大家一定不要这样,程序的严谨性从我做起。
(3)返回值的类型也要严谨的一点 ,他是和return的返回的类型是相同的。
(4)函数其实很有趣,里面的内容可以千变万化,但是他的接口(参数,返回值)也同样重要,我们要灵活运用.
四.下面我们来看一下,值传递与地址传递的区别,就以交换函数为例,分别以变量,指针,数组的形式进行传值与讲解;
(1).变量的传递
代码结果如下:
#include "stdafx.h"#include<iostream>using namespace std;void ExchangeValue(int one_value,int two_value);int _tmain(int argc, _TCHAR* argv[]){ int one=2; int two=4; ExchangeValue(one,two); cout<<"one:"<<one<<endl; cout<<"two:"<<two<<endl; cin.get(); system("pause"); return 0;}void ExchangeValue(int one_value,int two_value){ int temp; temp=one_value; one_value=two_value; two_value=temp;};
结果:
调试:根据调试发现在函数内,执行完函数,两个值交换了
但是当使用完函数之后,结果并没有交换!!!
(2).指针传递参数
代码结果如下:
// 20171111_Coc.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;void ExchangePointer(int *one_value,int *two_value);int _tmain(int argc, _TCHAR* argv[]){ int one=2; int two=4; int *p_one=&one; int *p_two=&two; ExchangePointer(p_one,p_two); cout<<"one:"<<one<<endl; cout<<"two:"<<two<<endl; cout<<"p_one:"<<*p_one<<endl; cout<<"p_two:"<<*p_two<<endl; cin.get(); system("pause"); return 0;}void ExchangePointer(int *one_value,int *two_value){ int temp; temp=*one_value; *one_value=*two_value; *two_value=temp;};结果如下:![没有传递] 参数一:4 参数二:2 指针一:4 指针二:2交换成功
(3).引用传递参数
代码结果如下:
// 20171111_Coc.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<iostream>using namespace std;void ExchangeQuote(int &one_value,int &two_value);int _tmain(int argc, _TCHAR* argv[]){ int one=2; int two=4; ExchangeQuote(one,two); cout<<"one:"<<one<<endl; cout<<"two:"<<two<<endl; cin.get(); system("pause"); return 0;}void ExchangeQuote(int &one_value,int &two_value){ int temp; temp=one_value; one_value=two_value; two_value=temp;};
结果如下:
交换成功
最后将讲解前三个程序的代码
解析:第一个程序是参数的值传递,传过去的是变量的副本,不会对原有变量进行修改,这也是一种保护,所以再显示的时候没有将在函数内已经修改的变量显示出来,还是原来的数值,第二个程序用的是指针,其实说到底也是值传递,只不过这次将第一个程序的值改变为地址,函数内将两个指针地址所指的值交换了,所以再表面上交换了ab的值,实则不然,只有最后一个引用,改变的是原变量的别名,导致变量也修改了。
- c++函数(努力在路上)
- 2016,在努力的路上~
- 在路上的程序员,努力ing...
- 在C的路上
- 在路上(1)
- 最美的时光在飞逝,为什么还在努力的路上蹒跚?
- 在路上(关于创业)
- 在路上(半年总结)
- 在路上——今天的努力对得起昨天的梦想
- 在路上
- 在路上
- 在路上
- 在路上
- 在路上
- 《在路上》
- 在路上
- 在路上
- 在路上
- IntelliJ IDEA 导入第三方 jar 包
- Linux下I2C驱动架构全面分析
- 构造函数与prototype原型
- Linux系统下Redis的安装
- 网络编程(一)
- c++函数(努力在路上)
- 3.JavaWeb开发入门
- Google LOGO的CSS Sprite
- 微信小程序之wx-知乎
- oracle数据库概念理解
- 起点在这里开始
- VS创建的exe文件在xp及win10等版本运行错误的问题
- 1017. A除以B (20)——C语言
- 比较合适的专栏文章