函数不能返回另一个函数或者内置数组类型,但可以返回指向函数的指针,或者指向数组元素的指针的指针.
207面:形参的长度会引起误解.
当编译器检查数组形参关联的实参时,它只会检查实参是不是指针,指针的类型和数组元素的类型是否匹配,而不会检查数组的长度.
交换a和b的值有两个方法
1.通过引用:
#include <iostream>
using namespace std;
void swapa(int &v1,int &v2)
{
int tmp = v2;
v2 = v1;
v1 = tmp;
}
int main()
{
int a=6,b=7;
swapa(a,b);
cout<<"a"<<a<<"b:"<<b<<endl;
return 0;
}
2.通过指针:
#include <iostream>
using namespace std;
void exchange(int *a,int *b){
int temp=0;
temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a=6,b=7;
int *p=&a,*pb=&b;
exchange(p,pb);
cout<<"a"<<a<<"b:"<<b<<endl;
return 0;
}
没有返回值的函数
一般情况下:如果类型是void的函数使用return语句是为了引起函数的强制结束,这种return的用法类似于循环结构中的break语句的作用.
关于形参是const的问题:
#include <iostream>
#include <stdexcept>
using namespace std;
void use_ptr(const int a,const int b)
{
// a=2;
// b=3;
cout<<a+b<<endl;
}
int main()
{
int a2=5;
int b2=6;
use_ptr(a2,b2);
//cout<<a<<endl;
return 0;
}
如上所以.形参有const影响的只是调用函数里头的内容不允许被改变而已,传入的实参是不是const都无所谓.
返回类型为void的函数通常不能使用第二种形式的return 语句.但是它可以返回另一个返回类型同样是void的函数的调用结果.
默认实参:如果一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参