指针的调用

来源:百度知道 编辑:UC知道 时间:2024/05/17 14:04:16
#define MBIG 1000000000
#define MSEED 161803398
#define MZ 0
#define FAC (1.0/MBIG)

double ran3(int *idum)
//float ran3(idum)
//int *idum;
{
static int inext,inextp;
static long ma[56];
static int iff=0;
long mj,mk;
int i,ii,k;

if (*idum < 0 || iff == 0) {
iff=1;
mj=MSEED-(*idum < 0 ? -*idum : *idum);
mj %= MBIG;
ma[55]=mj;
mk=1;
for (i=1;i<=54;i++) {
ii=(21*i) % 55;
ma[ii]=mk;
mk=mj-mk;
if (mk < MZ) mk += MBIG;
mj=ma[ii];
}
for (k=1;k<=4;k++)
for (i=1;i<=55;i++) {
ma[i] -= ma[1+(i+30) % 55];
if (ma[i] < MZ) ma[i] += MBIG;
}
inext=0;
inextp=31;
*idum=1;
}
if (++inext == 56) inext=1;
if (++inextp == 56) inextp=1;
mj=ma[inext]-ma[inextp];
if (mj < MZ) mj += MBIG;
ma[inext]=mj;
return mj*FAC;

Pi= ran3(int *idum)这样的形式?你不要只说形式,说具体的代码,你到底是怎么写的。。。

调用的话就是这样啊
int i = 0;
double d = ran3(&i);

我不明白参数的用处,所以就随便传了个进去。。
==========================================================
晕。。还是说形式。。我问的是具体的代码,如果说Pi= ran3(int *idum)这已经是具体的代码了,那这样写是不对的,int *idum是参数声明,所以要写类型,也即int*,为了在函数的实现中使用,所以要写清变量名,也即idum,但是实际调用的时候只要把变量传进去就可以了。这里要穿的是一个int指针,你只要传这个类型的变量进去就可以了,代码就像我昨天写的那样,至于传进去的指针指向的是多少,我也说了我对参数意义不明确,所以就随便写成0

你似乎没有理解参数传递的意思,建议多看看书吧~