函数传递
为什么运行完n_value(n);后,n还是等于0?
不应该是323吗
因为你n_value里的n和外面的n是2个n
你在调用n_value(n)的时候其实是复制了n的值给这个函数
你有2种方法解决,要么把n的地址传进去n_value(&n)
然后n_value方法要这样写
void n_value(int *n)
{
*n = p * q;
}
或者你让n_value返回一个int这样的话可以写 n = n_value(n)
然后n_value方法要这样写
int n_value(int n)
{
return (p * q)
} n_value函数里面的n和main函数里面的n是两个不同的n 本帖最后由 理想小青年 于 2018-6-8 13:48 编辑
#include <stdio.h>
void n_value(int n);
const unsigned long p = 17;
const unsigned long q = 19;
int main(void)
{
int n = 0;
n_value(n); //没有返回值n依旧是int n = 0;
printf("%d",n); //结果n = 0
return 0;
}
void n_value(int n)
{
n = p * q;
printf("%d\n",n); //结果n = 323
//return n; //return n;把323返回到int man函数,这时候两个n都是323
} 要&n,这样是地址传递可以改变实参的值
直接传递n是值传递,不改变实参的值 你修改是形参的数值。应该是取N的地址,然后函数参数是int *n 大蟒蛇吃饭团 发表于 2018-6-6 23:51
因为你n_value里的n和外面的n是2个n
你在调用n_value(n)的时候其实是复制了n的值给这个函数
你有2种方法 ...
#include<iostream>
using namespace std;
const unsigned long p=17;
const unsigned long q=19;
void n_value(int *n)
{
*n=p*q;
}
int main()
{
int *n;
int a;
n=&a;
n_value(n);
cout<<a;
cin.get();
return 0;
}
页:
[1]