我使用不同的函數在C++中進行編程。我在聲明和使用本地和全局變量時遇到了問題。首先必須在main中使用許多變量,並且還需要在函數中使用它們。C++全局變量和函數
因此,我宣佈了一些全局變量。我也想分配一些main()
以外的內存。
但是現在代碼似乎不起作用。請幫我解決這個問題。
我:
int *mb = new int [c]; //declare variables before you use them
matrix *M = new matrix [n+1+m];
當我使用上面的兩個變量爲全局變量,然後我的代碼不能正常工作。
這裏是我的代碼的一部分:
int p=4, n=5, m=5;
int num;
struct matrix{
public:
int row;
int col;
int val;
};
int P(int k){
return k-1;
}
void M_to_C(){
int *mb,*mc,*mi;
double *mv;
int i, cur_col;
matrix*M;
cur_col=-1;
for(i=0; i<= num; i++) {
cur_col=M[i].col;
mb[cur_col]=i;
mc[cur_col]=1;
mi[i]=M[i].row;
mv[i]=M[i].val;
}}
int main (int argc, char **argv){
int status = 0;
int project = 4;
int employee = 5;
int time = 5;
int empl [] = {2, 2, 2, 3};
int meet [] = {2, 4, 3, 3};
int NUMCOLS=n+m;
double *lb = new double [NUMCOLS];
double *ub = new double [NUMCOLS];
double *x = new double [NUMCOLS];
int *mb= new int [NUMCOLS];
int *mc= new int [NUMCOLS];
char *ctype = new char [NUMCOLS];
int **F = new int*[employee];
for(int a = 1; a <= employee; a++){
F[a] = new int [time];
for(int b = 1; b <= time; b++){
F[a][b]=rand()%2;
}}
int NUMROWS=0;
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
for(int l=1; l<=p; l++) {
if(F[i][j] ==0){
NUMROWS++;
num++;
}
}
}
}
int *mi= new int [2*NUMROWS+m];
double *mv= new double [2*NUMROWS+m];
matrix_entry *M = new matrix_entry [num+1+m];
num=-1;
int row=-1;
for(int i=1; i <= n; i++) {
for(int j=1; j <= m; j++) {
for(int k=1; k <= project; k++) {
if(F[i][j] ==0) {
row++;
num++;
M[num].col=P(k);
M[num].row=row;
M[num].val=-1;
}}}}
M_to_C();
此代碼是不可讀的混亂。我建議你花時間閱讀[C++書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),並學習適當的編碼風格和方法在不使用全局變量的情況下做你想做的事情。 – 2013-05-14 08:49:08