(C++语言程序设计)第12讲 函数2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++语言程序设计
第12讲 函数2
2020/10/20 HZAU信息学院计算机应用系 姚娟
1
主要内容
数组作为函数参数 内联函数 带有默认参数的函数 指针和函数
2
数组作为函数参数
❖ 数组元素作实参,与单个变量一样。
例如: int a[3]={1,2,3}; a[0]=power(a[1],a[2]);
cin>>n;
p=left(s,n);
cout<<"原来的字符串为:"<<s<<endl;
cout<<"左子串为:"<<p<<endl;
delete []p;
return 0; }
13
char *left(char *s, int n) {
int MyStrlen(char *); char *t; int l; l=MyStrlen(s); t=new char[l+1]; strcpy(t,s); if (n<l) t[n]=0; return t; }
#include<iostream>
#include<cstring>
using namespace std;
int main( ){
char *left(char*s,int n);
char *p,s[100];
int n;
strcpy(s,"1234567890");
cout<<"请输入一个正整数:";
❖ 数组名作参数,形、实参数都应是数组 名,类型要一样,传送的是数组首地址 。对形参数组的改变会直接影响到实参 数组。
3
// 变换数组元素并求和 int change(int a[],int n) {
int i,s; for(i=0;i<n;i++)
a[i]=2*a[i]; s=0; for(i=0;i<n;i++)
int MyStrlen(char *s)
{
int n=0;
while(*s++!='\0')
n++;
return n; }
14
结束语
预习:P99 5.6 局部变量和全局变量 P144 7.2 函数重载 P290 13.1.1 函数模板
学好计算机的唯一途径是
你的编程能力与你在计算机上投入的时间
15
7
例12-2 内联函数应用举例
#include<iostream>
内 using namespace std; double CalArea(double radius)
{
联
return 3.14*radius*radius;
}
函 int main() {
inline double CalArea(double radius);
数
double r(3.0); double area;
area=CalArea(r);
cout<<area<<endl;
return 0;
}
8
带 默认形参值的作用
默 ❖函数在声明时可以预先给出默认的形参值,
认 形
调用时如给出实参,则采用实参值,否则采 用预先给出的默认形参值。 ❖ 例如:
参 int add(int x,int y)
的
return 0;
函 数
} void fun() { ...
add();//使用全局默认形参值(实现1+2)
}
11
函数与指针
❖1、以指针作为函数参数
➢以地址方式传递数据,可以用来返回函数 处理结果。
➢实参是数组名时形参可以是指针。
❖2、函数返回值为指针
声明形式 数据类型 *函数名()
12
例12-3 求字符串的左子串
s=s+a[i]; return s; }
6
内联函数声明与使用
内 ❖声明时使用关键字 inline。
❖编译时在调用处用函数体进行替换,
联 节省了参数传递、控制转移等开销。
❖注意:
函
➢内联函数体内不能有循环语句和switch 语句。
数
➢内联函数的声明必须出现在内联函数第 一次被调用之前。
➢对内联函数不能进行异常接口声明。
值 { return x+y; }
的 int main()
函 数Βιβλιοθήκη Baidu
{ int add(int x=5,int y=6); add(10,20);//10+20 add(10); //10+6
add(); //5+6
return 0;
}
9
带 默认形参值的说明次序
默 ❖默认形参值必须从右向左顺序声明,
认 并且在默认形参值的右面不能有非默
带 默
❖ 在相同的作用域内,默认形参值的说明应保 持惟一,但如果在不同的作用域内,允许说
明不同的默认形参。
认 ❖ 例: 形 int add(int x=1,int y=2);
参
int main()
值
{ int add(int x=3,int y=4); add();//使用局部默认形参值(实现3+4)
形 认形参值的参数。因为调用时实参取
参 代形参是从左向右的顺序。
值 ❖例:
的
int add(int x,int y=5,int z=6);//正确
函
int add(int x=1,int y=5,int z);//错误
数
int add(int x=1,int y,int z=6);//错误
10
默认形参值的作用域
第12讲 函数2
2020/10/20 HZAU信息学院计算机应用系 姚娟
1
主要内容
数组作为函数参数 内联函数 带有默认参数的函数 指针和函数
2
数组作为函数参数
❖ 数组元素作实参,与单个变量一样。
例如: int a[3]={1,2,3}; a[0]=power(a[1],a[2]);
cin>>n;
p=left(s,n);
cout<<"原来的字符串为:"<<s<<endl;
cout<<"左子串为:"<<p<<endl;
delete []p;
return 0; }
13
char *left(char *s, int n) {
int MyStrlen(char *); char *t; int l; l=MyStrlen(s); t=new char[l+1]; strcpy(t,s); if (n<l) t[n]=0; return t; }
#include<iostream>
#include<cstring>
using namespace std;
int main( ){
char *left(char*s,int n);
char *p,s[100];
int n;
strcpy(s,"1234567890");
cout<<"请输入一个正整数:";
❖ 数组名作参数,形、实参数都应是数组 名,类型要一样,传送的是数组首地址 。对形参数组的改变会直接影响到实参 数组。
3
// 变换数组元素并求和 int change(int a[],int n) {
int i,s; for(i=0;i<n;i++)
a[i]=2*a[i]; s=0; for(i=0;i<n;i++)
int MyStrlen(char *s)
{
int n=0;
while(*s++!='\0')
n++;
return n; }
14
结束语
预习:P99 5.6 局部变量和全局变量 P144 7.2 函数重载 P290 13.1.1 函数模板
学好计算机的唯一途径是
你的编程能力与你在计算机上投入的时间
15
7
例12-2 内联函数应用举例
#include<iostream>
内 using namespace std; double CalArea(double radius)
{
联
return 3.14*radius*radius;
}
函 int main() {
inline double CalArea(double radius);
数
double r(3.0); double area;
area=CalArea(r);
cout<<area<<endl;
return 0;
}
8
带 默认形参值的作用
默 ❖函数在声明时可以预先给出默认的形参值,
认 形
调用时如给出实参,则采用实参值,否则采 用预先给出的默认形参值。 ❖ 例如:
参 int add(int x,int y)
的
return 0;
函 数
} void fun() { ...
add();//使用全局默认形参值(实现1+2)
}
11
函数与指针
❖1、以指针作为函数参数
➢以地址方式传递数据,可以用来返回函数 处理结果。
➢实参是数组名时形参可以是指针。
❖2、函数返回值为指针
声明形式 数据类型 *函数名()
12
例12-3 求字符串的左子串
s=s+a[i]; return s; }
6
内联函数声明与使用
内 ❖声明时使用关键字 inline。
❖编译时在调用处用函数体进行替换,
联 节省了参数传递、控制转移等开销。
❖注意:
函
➢内联函数体内不能有循环语句和switch 语句。
数
➢内联函数的声明必须出现在内联函数第 一次被调用之前。
➢对内联函数不能进行异常接口声明。
值 { return x+y; }
的 int main()
函 数Βιβλιοθήκη Baidu
{ int add(int x=5,int y=6); add(10,20);//10+20 add(10); //10+6
add(); //5+6
return 0;
}
9
带 默认形参值的说明次序
默 ❖默认形参值必须从右向左顺序声明,
认 并且在默认形参值的右面不能有非默
带 默
❖ 在相同的作用域内,默认形参值的说明应保 持惟一,但如果在不同的作用域内,允许说
明不同的默认形参。
认 ❖ 例: 形 int add(int x=1,int y=2);
参
int main()
值
{ int add(int x=3,int y=4); add();//使用局部默认形参值(实现3+4)
形 认形参值的参数。因为调用时实参取
参 代形参是从左向右的顺序。
值 ❖例:
的
int add(int x,int y=5,int z=6);//正确
函
int add(int x=1,int y=5,int z);//错误
数
int add(int x=1,int y,int z=6);//错误
10
默认形参值的作用域