昨天说到参数和返回值,但是只是开了个头,今天我们来继续看看函数的参数,还是从main()开始吧,这个函数我们从开始到现在都没有发现他有带参数,但是我们有些时候可能会碰到像下面这种类型: int/void main(int argc,char * argv[]) 大家可能会觉得奇怪,这个真是我们接触的mian函数吗?一开始我也和大家一样,当然如果有人接触过UNIX或者Linux系统的话而且也曾在上面用过C/C++编程过的话,那对这个函数就不陌生。在windows系统上一般没人使用这个带参数的原型,所以我这个只使用windows的人第一次碰到这个原型后顿时大惑不解,于是去Google了下,这才知道这是UNIX余留下来的习惯,尽管如此,我们试着看下这两个参数到底实现些什么,我们编写像下面这样的程序: ---------------------------- #include #include int mian(int argc,char *argv[]) { for(int i=0;i<> printf('%s\n',argv[i]); system('PAUSE'); } --------------------------- 发现他的输出竟是下面的样子: 看来在我们这个程序里面,argc的值只是1,argv[0]直向的字符串是我们该程序的路径,这是为什么呢?大家可以自己Google一下吧,毕竟现在我们是在windows下的可视化界面下编程,所以这些参数根本用不上,我也不懂,哈哈…… 我们现在继续来看下面这个函数: ---------------------------- long power(int n,int m) { long s = 1; while(m--) s *= n; return s; } -------------------------------- 这个函数带有两个参数,n和m,返回一个long类型的值,其中这两个参数和返回值都是这个函数的接口,如果我们要调用这个函数,就必须给他传递两个参数进去,而且接收他返回的值。 不过这个函数有很大的局限性,他只能接受两个int类型的数作为参数,等以后我们学到C++的时候那时候我们用函数模板来重新定义这个函数,那时就完美了。 又扯远了,还是回到我们的函数上来,函数是实现特定功能的代码,就好比我们上面的函数是实现一个幂次方的,还记得我是怎么声明这个函数的吗? ---------------------------- #include #include long power(int n,int m);//声明函数原型 int age();//声明函数原型 int main() { //实现代码段 } long power(int n,int m)//定义函数 { //功能实现代码 } int age() { //功能实现代码 } ----------------------------- 想要声明一个函数,我们就应该在main()前面将他声明,事实上这就是给出了一个接口给我们程序调用,这个函数的具体实现还在下面的定义。我们在上面的程序里声明了两个函数,一个带参数一个不带参数,所以第一个参数的接口是两个参数和返回值,第二没参数的函数的接口就是他的返回值。 哎,我觉得我真不适合说这些文绉绉的东西,若对“函数”想要了解得更多的话,大家可以去Goole搜索一下,我们还是直接回到一些大家比较想要了解的知识点上来吧,既然这里说到函数,我也不知道该给大家怎么说,所以我们接下来就说说递归函数吧。 不过,关于递归函数,留待下周吧,大家周末愉快吧。
======================== 回复D&d直接查看目录 |
|
来自: 昵称29398856 > 《第二天》