C语言关于形式参数传递的问题

想问一下为什么test1&test2的结果不能传递给guess,而且如果把int test1(=50)、int test2(=50)去掉括号就会出现指针错误?
---------------------------------------------

#include<stdio.h>
int judge1(int n);
int judge2(int m);
int main(void)
{
int guess=50;
char response;
printf("Pick an integer from 1 to 100.I will try to guess ");
printf("it.\nRespond with a y if my guess is right and with");
printf("\nan n if it is wrong.\n");
printf("Uh...is your number %d?\n",guess);
while((response=getchar())!='y')
{
if(response=='n')
{
printf("%d is less or more?\n",guess);
switch(response)
{
case'l':
judge1(guess);
case'm':
judge2(guess);
default:
printf("Please enter the right answer!\n");
}
printf("Uh...is your number %d?\n",guess);
if(response!='y')
continue;
}
printf("Sorry, i don't understand it,please give me y or n\n");
while(getchar()!='\n')
continue;
}
printf("I knew i could do it \n");
return 0;

}
int judge1(int n)
{
int test1=50;
test1=test1+test1/2;
return test1;
}
int judge2(int m)
{
int test2=50;
test2=test2-test2/2;
return test2;
}
-------------------------------------------
该如何改进?

第1个回答  2015-08-05
肯定能传递!你的函数写得有问题,你把guess传给了函数的形参n,函数体中却没有用到n,所以实质上等于什么也没有传递……追问

那应该怎么改,函数能使用到n,而n不是我传递的函数的名称么?

追答

你的函数概念现在看来还很乱!n是judge1的形式参数,m是judge2的形式参数,怎么又成你的函数名称了,你的函数名称不是judge1和judge2吗?你把guess传给了n或m,那么函数体中就得用n或m,你不用不就等于没有传吗?而且你的问题是不能把“test1&test2的结果”传给guess,这叫人一头雾水啊,啥意思呢?我猜你的意思可能是

int judge1(int n)
{
return n+n/2;
}
int judge2(int m)
{
return m-m/2;
}
吧?

第2个回答  2015-08-05
因为代码中根本没有任何迹象表明你想把某个变量的值“传递给”guess啊……本回答被网友采纳

计算机二级 C语言 形参实参问题 这道题应该怎么做?
函数参数的传递是对参数进行复制 也就是说所调用的函数传进去的参数与该函数使用的参数是两个不同位置但数据相同的参数 所以在函数中对该参数进行操作是不会影响到原参数的 简单地理解就是函数中操作的是一个复本 而如果传递的是地址且函数对地址内的数据操作才会有影响 因为两个参数虽然位置不同但却...

c语言函数的形参与实参的问题?
首先要理解一点,数组在做参数传递的过程中会损失数组的长度信息,退化成一个指针 例如你形参写成(char s[10]),或者干脆(char s[]),函数只能接收到一个char 所以:char dp[n][m]的类型本质上是数组的指针,即char (*)[m],它是指向长度为m的char数组的指针 char **是char *的指针,指针是...

c语言函数实参向形参单向传递问题
因为你的子函数参数里有指针变量,是可以改变实参的 数组其实和指针变量的意思差不多,可以照着地址传进指针变量的参数

C语言中实际参数和形式参数的设置及传递方式
C语言中实际参数(实参)与形式参数(形参)之间的传递方式有传值和传地址两种函数调用方式。下面通过举例来说明实参和形参的设置方法以及传值与传地址的两种函数调用方式。值传递方式:include<stdio.h>void fun(int a, int b) \/\/ 此处a, b为形参{ a++; b++;}void mian(){ int a...

在C语言中,函数实参与形参之间的数据传递方式是( )传递方式。
函数实参与形参之间的数据传递方式是( 值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。那么对行参的修改,不会影响实参的值 。引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,...

C语言中函数定义形参为数组时的问题
1.数组为参数传递的是数组首地址,而不是元素的值,而你说的a[size]仅仅是值,况且事实上也没有a[size]这个元素 2.既然是数组名的传递,当然需要由一个数组的参数来接收,int v[]”的问题是因为他是形式参数,是为了接收数组的 n的问题是因为,如果只传递了数组,但是函数并找不到数组的个数,所以需要...

C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是
答案是B,单向的值传递 简单变量做实参时,相应的形参变量也是简单变量,它们之间的数据传递方式是单向的值传递,即数据只能由实参传到形参,形参值的改变不影响实参值的变化。

c语言函数调用时,实参和形参是如何传递的?什么时候要写指针型变量?求高...
函数调用时,实参值会自动传递给形参变量。指针比较复杂了。是变量的地址,如果参数类型是指针类型,则必须把实参变量的地址传递过去。当然在函数内也是间接引用实参变量的。比如 void f(int * p) \/\/形参是指针类型变量 下面是调用形式 f(&a); \/\/调用函数,实参是变量a的地址。

请c语言高手们赐教:什么时候应注意函数实参河和形参的单向传递问题
C语言中有两种传递方式,一个是值传递,另一个是地址(指针)传递。值传递就是单向传递。它只给从 实参 传递给 形参 ,而形参经过改变后不会传递给实参,对 函数 而言,就是 参数 经过主调用函数传递给了 被调用函数 ,而我们知道,被调用函数除了用return 语句 返回一个值外,其余的值就不可以返回...

关于c语言 在c中调用函数时,只能把实参的值传递给形参,形参的值不能...
不对,在C语言中,传值有地址传值和参数传值,参数传值只能将实参传值给形参,所以A选项正确。C语言中的外部变量是可以在函数之间传递数据的。C语言中的自动变量是默认的变量,实际上是函数中的局部变量,所以D选项正确。全局变量一经定义都是需要分配内存单元,在程序运行过程中自始至终都会占用固定的...

相似回答
大家正在搜