assiss谈谈函数中参数调用的问题
c语言吧
全部回复
仅看楼主
level 1
茉莉ML 楼主
assiss关于"人定胜天"和大自然的问题这里暂且不谈;我也不想破坏掉vc99刻意营造的凄美氛围我想请你再谈谈函数中参数调用的问题;
2004年11月12日 04点11分 1
level 7
呵呵,
2004年11月12日 04点11分 2
level 9
好吧.我就来总结一下,函数参数调用的问题.1.参数的个数.函数可以有0个,1个,2个.....甚至可以有任意个参数.如果没有参数(0个),那么这个函数的参数即是void.比如:int a(void);1个,2个等个数是已知的函数比较常见,比如int a(int i);int b(int i, int j);C语言一般还支持参数个数不确定的情况,这个我们最熟悉的就是printf了.printf的参数原型是printf(const char *,...);至于这个怎么定义,怎么用,大家就得自己去找资料了.因为这个不是很常用.而且一般情况下最好不用它.能用确定参数的,还是用确定参数个数比较好.2.按值传送数据,按址传送数据一般我们喜欢调用直接传值的函数.比如int pa(int a){ printf("%d",a); return 0;}这样的优点是调用方便.不会出错.但如果我们需要在函数内部修改你传送的这个参数,并让这个修改在函数结束时仍有效,就得按地址传送参数了.这就是指针参数.比如:int pa(int *a){ *a=10; return 0;}int main(){ int i=1; pa(&i);//i will be changed to 10 after function pa. printf("%d",i);//this will print 10 at last;}
2004年11月12日 12点11分 3
level 9
3.数组参数有时候你想传送一批数据当参数,这时候用数组参数就很方便了.但要注意的是,C语言中,访问数组,完全是你自己的事,C语言不会帮你作任何检查.并且你传送的数组名其实也是地址,你对数组作出的任何改变,都是真实有效的,和指针一样.比如:int p(int a[],int n)//有人喜欢写成int a[10],//其实没用的.C语言在把数组当参数时,不管你数组有多大.//因此我们常常需要再传送一个参数n,用来告诉这个函数,这个数组有多大.{ for(int i=0;i
2004年11月12日 12点11分 4
level 1
茉莉ML 楼主
Thank you,assiss!VC99 呵呵是何意思?
2004年11月12日 12点11分 5
level 7
我也不想破坏掉vc99刻意营造的凄美氛围---------我是说,我那么说是开玩笑的,让你这么一说,弄得我好像好小气,呵呵,无言了,
2004年11月12日 12点11分 6
level 1
茉莉ML 楼主
#include
#include
int main(int argc, char *argv[]){float a[10]; int i,max; for(i=0;i<10;i++) scanf("%f",&a[i]); if max=a[0]; for(i=0;i<10;i++) if(max
2004年11月12日 13点11分 7
level 1
茉莉ML 楼主
if max=a[0]if没有的,拷的时候添的
2004年11月12日 13点11分 8
level 7
#include
#include
int main(int argc, char *argv[]){float a[10]; float max;int i; for(i=0;i<10;i++) scanf("%f",&a[i]); for(i=0;i<10;i++) if(max
2004年11月12日 14点11分 9
level 9
可爱的小茉莉喔.呵呵.你什么时候才能不粗心呢.
2004年11月12日 16点11分 10
level 1
茉莉ML 楼主
Thanks vc99; assiss,我很可爱吗?你最近在研究猫吧;平平在凌晨出现;我可能粗心,可这是书上的例题!
2004年11月13日 12点11分 11
level 1
茉莉ML 楼主
SORRY,字写错了把"频"写成了平了.
2004年11月13日 12点11分 12
level 0
帮帮我吧,我不会写作业了。某班学生的各科成绩和总分按学号统计,将总分为150分的人按由高到低输出。嘿嘿。。。。谢谢了
2005年05月19日 11点05分 13
level 0
对了,还要求用多个函数调用。
2005年05月19日 11点05分 14
level 0
请问,如果函数的形参定义成const ,是不是意味这实也要定义成常量?
2006年04月03日 14点04分 15
level 0
请问,如果函数的形参定义成const ,是不是意味这实参也要定义成常量
2006年04月03日 14点04分 16
level 0
不是,实参可以不是const其实可以这样理解的,参数的传递过程是使用实参的值(左值||右值,C++ 的说法)对形参进行赋值.只要符合赋值规则就行了.当然有些情况会有点变动.例如二维数组指针的传递:int a[m][n]={{...},...};/*函数原型*/viod print(int a[][n]);|| void print(int (*a)[n]);||void print(int **a,int n);/*其中传给a的实参必须是指向数组首行的列地址,a[0],或者&a.n是元素个数*/函数调用时挂起主调函数,在程序栈中分配空间来存放调用函数过程中的局部变量和计算结果以及返回值.不同的函数有不同的局部域,所以不同函数可以使用相同的变量名,这并不会引起冲突.
2006年04月03日 14点04分 17
level 0
/*其中传给a的实参必须是指向数组首行的列地址,a[0],或者&a.n是元素个数*/ 是指形参声明为指针时.
2006年04月03日 14点04分 18
level 0
更正 viod print(int **a,int n);为viod print(int *a , int n);
2006年04月03日 14点04分 19
level 0
刚刚看了个getchar() putchar()的帖子 只知道assiss英语好像很强大,我英语超差啊  膜拜楼主
2009年08月26日 11点08分 20
1 2 尾页