新手第一次寫大一些的工程,在主函式前面加了很多全域變數,在主函式中的readin中呼叫子函式subtab總會改變一些其他與子函式無關的全域變數的值,請教一下,是怎么回事
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <complex.h>
#include <math.h>
#include "bellmod1.h"
#include "readin1.h"
int main()
{
envfil=fopen("env.txt", "r");
prtfil=fopen("prtfil.txt", "w");
elfil=fopen("EL.txt", "w");
readin();
//后面省略
}
#ifndef BELLMOD1_H_INCLUDED
#define BELLMOD1_H_INCLUDED
#define pi 3.14159265
FILE *shdfil, *rayfil;
FILE *arrfil;
FILE *atifil;
FILE *btyfil;
FILE *envfil, *prtfil;
FILE *sbpfil;
FILE *brcfil, *trcfil, *ircfil;
FILE *rlfil;
FILE *elfil;
//main
const int maxn = 300000;
double degrad = pi / 180.0;
double raddeg = 180 / pi;
double _Complex ci = 0.0+1.0*I;
int arrivalsstorage=20000000;
int ibeam;
double H;
double i_smooth[10000],o_smooth[10000],oo_smooth[10000];
//聲吶方程部分
double rl_f[501][10000],tl_f[501][10000];
double el[10000];
double srr[10000];
int sonartype,tstype,bjtype,bottype,sctype;
double sl,tl,nl,di,dt,ts;
double stdd,sndd;
double utl; //臨界聲壓
//readin
int nsd, nrd, nr, ntheta;
double sd[10], rd[501],rd1[501], r[8001];
double theta[10000];
int nr1,nrd1;
int allocatestatus, nmedia,npts;
char title[80]; double freq,fl,fh;const int isingl=0;
int nimage,ibwin; int mxn; double zbox; double rbox;
double epmult;double rloop;char topopt[8]=" ";char component;
char botopt[8]=" ";
char runtype[8]=" "; char beamtype[8]=" ";
char runtype1[8]=" ";
int nbeams;int i;
double alpha[5000];//alpha(nbeams)
char ssptype[1], bctype[1], atunit[1];
double c0 = 1500.0;
double lambdax10, lambdax66;
double freqd, bumden=0.0, eta= 0.0, xi= 0.0, sigma=0, dby20;
char filename[8]=" ";
double ztmp;
double alphar = 1500.0;
double betar = 0.0;
double rhor = 1.0;
double alphai = 0.0;
double betai = 0.0;
char plottype[12]=" ";
double atten;
#ifndef READIN1_H_INCLUDED
#define READIN1_H_INCLUDED
#include"errout1.h"
#include"spliner1.h"
#include"subtub1.h"
#include"sort1.h"
#include"writeheader1.h"
double readin()
{
//貼不下了,前面省略
subtab(r, nr); //就是呼叫這個子函式的時候總是修改無關的全域變數的值
sort1(r, nr);
}
uj5u.com熱心網友回復:
這種現象只有一種情況,就是越界了。自己好好查查。單步除錯。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78784.html
標籤:C++ 語言
上一篇:為什么第一個對第二個輸出是零呀
下一篇:合并果子問題一直wrong
