c 形参与实参

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:45:43
void main()
{
int n;
printf("input number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d\n",n);
getch();
}

怎么输出结果还是n=5050

大概知道你要表达的意思

小小程序错误真多!!

void main()
{
int n;
printf("input number\n");
scanf("%d",&n);
s(n); //应该在前面进行定义
printf("n=%d\n",n); //你没有返回,所以这里的n输出的还是你输入的值;
}
int s(int n) //该函数为int类型 函数要有return
{
int i;
for(i=n-1;i>=1;i--)
n=n+i;
printf("n=%d\n",n);
getch();
}

把s(n);改成
n=s(n);

要不返回改变变量值的话要用指针传递

如果不用指针 用数值传递的话

就好比我们两个人

你告诉我n=100
然后我经过计算得出一个新的n值
但我没有告诉你(相当没有return)
你也还是认为n=100并不知道我计算过后的n值

但是通过指针传递的话
就相当于你知道我的计算过程
所以就算我不告诉你你也知道答案

这只是很土的解释,具体看书吧

如果输入100的话,输出会是100,如果你想调用函数成功的话,可以改函数int s(int &n)