c++巩固——函数相关

1、iomanip库与cout

iomanip库是一个控制cout输出格式的库文件,在调用库中某函数即可之后输出对应格式,也可以对格式进行取消。如在用其它进制输出整数后,需要再设置十进制数输出,否则一直其它进制。


cout<<setf(ios::showpoint);
cout<<a<<endl;//强制显示小数点后的无效0,这个就需要调用iomanip库
cout<<oct<<x<<endl;//不需要调库
cout<<dec<<y<<endl;

https://baike.baidu.com/item/iomanip/3319954?fr=aladdin

2、函数的参数

1、参数为指针,将空的占用的内存删除

void FenLei(int* a,int* b,int length){...}

int ban[10]={1,1...};

int num[2]={0};

FenLei(ban,num,10);

参数为指针类型,也可以代入int整型数组

  2、内存整理,参数为字符数组

void DelZero(char* ch,int size){

int length=size;

for(int i=0;i<z;i++)

{
if(ch[i]==' ')

for(int j=i;j<size;j++)

    {

    ch[j]=ch[j+1];

    length--;

    i--;//与i--对应

    }

}
ch=new char[length];

}

 

3、返回多个值。可以存入一个数组返回,函数的类型变为int*型

int* FenPei(int* a,int* b,int num)
{
int* remain=new int[num];
...
return remain;
}
void main
{
...
premain=FenPei(fruit,num_people,10);
delete[] premain;
premain=NULL;
}

//定义函数时,new申请的内存不能在函数体内释放,否则之后获取不到首地址

4、参数为字符二维数组

void exam(char** ch,int row,int col){

...

}


...
char** ch=new char*[m];
for(int i=0;i<m;i++)
    ch[i]=new char[n];
...


delete[] ch;
ch=NULL;
...

 

5、参数为字符串数组

void name(char *ch,string &str)
{
string str_first[26]={"曹魏","东吴"...};
...
str+=str_first[ch[i]];//第一个
...
}

参数为字符串(一维数组),是封装好的string类,有头文件<string>,需要和字符二维数组相区分

6.形参为引用

当形参采用指针传递时,使得内存的安全性没有保障,而形参采用引用更安全。

void change_name(string &name.string later)
{
    name=later;
}

指针传递的是地址值,而引用是某块内存的别称,传递的是具体的值。

3、<cctype.h>头文件

用于函数isalpha的使用,可以判断元素是否为字母

4、头文件重定义错误

良好的编程习惯是,在.h头文件里面只是函数和类的声明,如何随便写了函数的定义在.h,并且由多个头文件包含,就会出现重定义的错误。因此,我们的函数实现功能的定义代码放在cpp文件里来写。

5、重载函数

重载函数可以根据参数类型的不同,调用不同定义的同名函数。

函数重载的多个函数名字必须相同,参数列表必须不同,个数或者类型。但是返回值的类型不同无用。

重载函数尽量不要有默认参数,如果一共三个参数,实际上就是非默认的两个参数,系统可能不知道调用哪个,容易产生二义性。

6、main后执行代码

void main()
{
atexit(add);
atexit(substract);
cout<<"main中"<<endl;
}

main之后执行代码需要在main中注册函数。

用atexit注册的函数返回类型必须是void。_onexit()也可以注册函数,返回类型必须是int。

如全局对象的析构会在main结束之后运行。先被注册的函数后被执行

7、递归

递归函数是一直返回,知道不再调用自身,即终止

double JieCheng(int n)
{
if(n==0)
return 1;
else
return n*JieCheng(n-1);
}

8、随机数生成

RAND_MAX 指的是C语言标准库 <stdlib.h> 中定义的一个。任何一次对 rand 的调用,都将得到一个 0~RAND_MAX 之间的伪随机数。

其值最小默认为32767,最大为2147483647,通常在产生随机小数时可以使用RAND_MAX。

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main(void)
{
	srand((unsigned int)time(NULL));
	double a[10];
	int i;
	cout << RAND_MAX << endl;
	for (i = 0; i < 10; i++)
		a[i] = (double)rand() / RAND_MAX;
	for (i = 0; i < 10; i++)
		cout << a[i] << endl;
	return 0;
}

 (alt+prtscreen...当前窗口截图)

9、main函数接收参数

main在启动运行时传递参数

int main(int argc,char** argv)
int main(int argc,char* argv[])

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值