函数的基本知识
Posted 雪傲天1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数的基本知识相关的知识,希望对你有一定的参考价值。
函数的指针参数
两种参数传递的方法:一种值传递,一种是地址传递,值传递形参改变不改变实参的值,形参所占的内存空间和实参不一样。
int swap(int nuum1,int num2)
num1^=num2;
num2*=num1;
num1^=num2;
int main()
int a=10;int b=20;
swap(a,b);
a | 10 |
b | 20 |
int num1 | 10 |
int num2 | 20 |
所以值传递时并不会改变形参,但是指针传递时,传入的是地址,所以会改变实参
int swap(int *p1,int *p2)
(*p1)^=(*p2);
(*p2)*=(*p1);
(*p1)^=(*p2);
int main()
int a=10;int b=20;
swap(&a,&b);
a | 10 | 0x0001 |
b | 20 | 0x0002 |
int *p1 | 0x0001 | |
int *p2 | 0x0002 |
这里*p1相当于*0x0001,就是取a的地址,所以直接修改了实参的值
函数的数组参数
像这种,如果想要传递数组进去,不能 传递a[3]这种方式
int add(int a[3])
std::cout<<sizeof(a[3]);
return 0;
int main()
int a[3] 1,2,3;
add(a[3]);
因为不知道要数组的元素个数,可能是2个,也可能是3个所以推荐用下面这种方法。另外,如果传入a【3】,编译器不会知道这是数组还是指针类型,因为a【3】实际上一个指针,另外假如,假如不把数组当成指针,那么不同长度的数组就是不同的类型,a【2】和a【3】类型都不同,如果把a[3]作为形参,传入不同长度的数组都需要不同的函数
数组有一种声明方式是不写下标,由编译器判断数组的容量大小
int a[] 1,2,3;
所以数组的参数传递可以这样写,count表示数组元素个数
add(int a[],unsigned count)
当然,也可以用指针方式来传递,因为数组本身就是指针
多维数组的参数传递
必须指定低维的数组元素个数
add(int a[][2],unsigned count);
int main()
a[2][2] 1,2,2,3;
add(a,2);
因为多维数组是以低维为步径,如果低维也用变量,就无法确定步径。
函数的引用参数
引用做函数参数时必须初始化,所有有时候用指针还是用引用做参数可以从这方面考虑
指针的引用,形参指针引用可以修改实参指针的指向,即指针的引用可以修改指针,原理非常简单
引用参数类型必须一样
void swap(int& a)
a = 200;
int main()
float p 100 ;
swap(p);
std::cout << p;
这个程序就是错误的,必须让p为int类型才可以,因为别名类型必须和原名类型相同
基本初等函数图像
基本初等函数包括:常函数、幂函数、指数函数、对数函数、三角函数和反三角函数
初等函数:初等函数(基本函数)是由常函数、幂函数、指数函数、对数函数、三角函数和反三角函数经过有限次的有理运算(加、减、乘、除、有限次乘方、有限次开方)及有限次函数复合所产生、并且在定义域上能用一个方程式表示的函数。
基本的初等函数就像ABCD等字母,经过组合变化形成初等函数如英语句子:“Hello, English World”。按照一般的教育对三角函数和反三角函数的讲解会很薄弱。个人做笔记喜欢从困难的问题开始。
三角函数相关
tanx 相关
(y=tan(x)的图像)
(tanx在区间[-frac{pi}{2},frac{pi}{2} ]上单调增,周期为=pi)
(y'=sec^2(x)的图像)
极小值是1
cotx相关
(y=cotx)
(y'=-csc^2(x))
secx相关
(y=secx)
(y'=secx cdot tanx)
cscx相关
(y=cscx)
$y‘=-cscx cdot cotx $
反三角函数
arcsinx相关
(y=arcsinx)
$
y‘=frac{1}{ sqrt(1-x^2)}$
arccosx相关
(y=arccox)
$
y‘=-frac{1}{ sqrt(1-x^2)}$
arctanx相关
(y=arctanx)
(y'=frac{1}{1+x^2})
arccotx相关
(y=arccotx)
(y'=-frac{1}{1+x^2})
以上是关于函数的基本知识的主要内容,如果未能解决你的问题,请参考以下文章