gpt4 book ai didi

C++ 全局变量和函数

转载 作者:行者123 更新时间:2023-11-27 23:15:42 28 4
gpt4 key购买 nike

我正在使用不同的函数使用 C++ 进行编程。我对局部和全局变量的声明和使用有疑问。有很多变量首先要在main中使用,在函数中也需要使用。

所以,我声明了一些全局变量。我还想在 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();

最佳答案

您可以将它们定义为全局变量并将它们填充到 main 中:

int *mb;
matrix *M;

int main () {
mb = new int [c];
M = new matrix [n+1+m];
:
}

但我应该警告您,全局变量(以及像 mblbub 这样的短变量名)通常被认为是一个坏主意.

您最好通过将它们放在一个类中或根据需要将它们作为引用传递来限制它们的可访问性。

关于C++ 全局变量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16538621/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com