第六章函数总结

本文详细介绍了C++中的函数定义与使用方法,包括函数的基本结构、参数传递方式及指针的应用。同时通过实例展示了如何利用指针来操作数组元素,并提供了一个计算正整数分解式的递归算法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本知识。

1、函数定义形式 类型 函数名

                          {

                              语句序列

                           }

2、函数返回值类型,函数体中由return语句返回的值的类型,没有返回值其类型为void。

3、形式参数表 逗号分隔的参数说明表列,缺省形式参数时不能省略圆括号。

     一般形式为:类型 参数1,类型 参数2,...,类型 参数n。

4、实际参数表与形式参数必须在个数,类型,位置一一对应。

5、形参的数据类型必须一一说明函数调用,调用形式,函数名(实参)。

6、类型名 & 引用名 = 某变量名; 

      某个变量的引用,和这个变量是一回事,相当于该变量的一个别名。

7、指针变量:其内容为地址(存储位置) 的变量,简称指针。它所指向的地址上存放的变量称作目标变量。

 一个指针变量只能指向同一类型的变量。即整型指针变量只能指向整型数据的地址,而不能放其它类型数据的地址。

8、函数的参数可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。

 指针变量作为函数参数与变量本身作函数参数不同,变量作函数参数传递的是具体值,而指针作函数参数传递的是内存的地址。

9、*x指针变量

     *x说明/引用变量

10、s*=*(p+i)把右边值给左边变量,左边变量扩大倍数重新赋值。

11、在正常语句中,指针变量前加“*”是指取指针变量中的目标变量(目标变量取地址给指针变量),在说明变量时,前面加“*”代表定义指针变量前面加“&”代表引用变量。

12、递归定义:使问题向边界条件转化的规则。递归定义必须能使问题越来越简单。


     递归终止条件:也就是所描述问题的最简单情况,它本身不再使用递归的定义。

13、给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。

      (1) n    set(n);
     (2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
     (3) 按此规则进行处理,直到不能再添加自然数为止。
二、例题详解。
用指向数组的指针变量输出数组的全部元素。
 int main( )
{   int  a[10], i;
     int  *p;
     for (i=0; i<10; i++)
           cin>>a[i];//输入数组元素

     for (p=a; //指针变量赋值 p<a+10;  p++//指向下一个元素)
          cout<<*p<<‘\t’;//输出指针指向的数据
}

 int main( )
{   int  a[10], i;
     int  *p=a;
     for (i=0; i<10; i++)
           cin>>a[i];
     for (i=0; i<10; i++)
          cout<<*p++<<‘\t’;
}  
*p    p=p+1
//输出数据后指针加1

 大于1的正整数n可以分解为: 
当n=12时,共有8种不同的分解式:
对于给定的正整数n,编程计算n共有多少种不同的分解式。
输入
数据有多行,给出正整数n
(1≤n≤2000000000)。
输出
每个数据输出1行,是正整数n的不同的分解式数量。
12=12
12=6*2

12=4*3

12=3*2*2

12=2*6

12=2*3*2

12=2*2*3

 int total; //定义为全局变量
void solve(int n) 
{
if (n==1) total++; //获得一个分解
else for (int i=2; i<=n; i++) 
if (n%i==0) solve(n/i);

}

 //主函数main()中数据的读取与调用
int n;
while( cin>>n)
{
total = 0;
solve(n);
cout<<total<<endl;
}
三、个人感想。

对c++这门学科,对我来说是一门非常困难的一门课,我会花最大经历去学习。

经过,只几天的学习,我知道简单的函数思路,也知道了大体的做题思路,上学期我有太多东西不会,导致这学期我跟的很慢,但我不会放弃,我会坚持把它学好!

我会先把基础搞明白,在开始刷题,慢慢追上大家的脚步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值