定义了2个宏
定义了一个结构体和一些变量,其中使用到了这2个宏
#define POPSIZE 20
#define DIMENSION 2
typedef struct
{
float number[DIMENSION];
float best[DIMENSION];
float bestfitness;
float fitness;
float speed[DIMENSION];
int Total;
float Sum;
float Avg;
} indi;float P[DIMENSION];
float PBEST;
indi individual[POPSIZE];
还做了一个界面,需要改变这两个宏的值。如果将POPSIZE、DIMENSION 定义为int型的变量,则报错,有没有什么方法解决这个问题,最终结果是要在界面里设置POPSIZE、DIMENSION 的值,传到函数里。而且结构体和数组的定义又不受影响。谢谢!
定义了一个结构体和一些变量,其中使用到了这2个宏
#define POPSIZE 20
#define DIMENSION 2
typedef struct
{
float number[DIMENSION];
float best[DIMENSION];
float bestfitness;
float fitness;
float speed[DIMENSION];
int Total;
float Sum;
float Avg;
} indi;float P[DIMENSION];
float PBEST;
indi individual[POPSIZE];
还做了一个界面,需要改变这两个宏的值。如果将POPSIZE、DIMENSION 定义为int型的变量,则报错,有没有什么方法解决这个问题,最终结果是要在界面里设置POPSIZE、DIMENSION 的值,传到函数里。而且结构体和数组的定义又不受影响。谢谢!
解决方案 »
- vc中单元测试遇到的困难 求助。。。。。
- vs2008自带的VC++单元测试怎么样啊?能测试非托管代码吗?
- Winsock API: getpeername() 的含义是什么?
- 过两天要去面试,大家给点指点!
- 怎样取的自己可执行文件的路径?(进者有分)
- C链接数据库的时候出现的问题,望高手指点。
- 在局域网上不了搜狐,怎么办?
- 小弟刚学VC,写了一个显示位图的程序,编译时出现下面两个错误,请高手指教!!!!
- 请问,在ATL开发的组件中,我想写一个方法,输入参数是字符串,返回一个字符串,能给我一个这个方法的最简单的例子代码吗?????
- 如何获取一个运行的IE实例,并跳转到相应的URL中?
- VC中如何重命名文件夹?文件夹下还有文件...
- 如何获取进程的图标,并显示在list control里面
============
数组只能用常量作维数,你可以用动态数组
比如:float best[DIMENSION];
你可以改成float *best;定义成指针,在使用时先分配空间:best=new float[DIMENSION];要注意的是,因为是new出来的,所以在不用时一定要delete[] ...
=============
上面的DIMENSION可以是常量,也可以是变量,当然可以改变了。
typedef struct
{
float *pnumber;
float *pbest;
float bestfitness;
float fitness;
float *pspeed;
int Total;
float Sum;
float Avg;
} indi;
//然后动态分配pnumber=
const int POPSIZE = 20 ;
const int DIMENSION = 2 ;typedef struct
{
float number[DIMENSION];
float best[DIMENSION];
float bestfitness;
float fitness;
float speed[DIMENSION];
int Total;
float Sum;
float Avg;
} indi;float P[DIMENSION];
float PBEST;
indi individual[POPSIZE];
要想动态改变大小,就需要用动态数组了。(C++ 的new , 或C的malloc),要记得不用的时候释放掉(C++的delete,C的free)。
float POPSIZE;
float *pnumber=new float[DIMENSION];
float *pbest=new float[POPSIZE];
cin>>DIMENSION;
cout<<pnumber<<endl;cin>>POPSIZE;
cout<<pbest<<endl;
另外一个代码是:float N;
float s=0;
cout<<"请输入数组长度"<<endl;
cin>>N;
float *f=new float[N];//分配动态数组
cout<<f<<endl;
cout<<"请输入数组的值"<<endl;这个动态指针的初始化值不是0
float POPSIZE;
float *pnumber=new float[DIMENSION];
float *pbest=new float[POPSIZE];
这样合适么?
float POPSIZE;
float *pnumber=new float[DIMENSION];
float *pbest=new float[POPSIZE];
cin>>DIMENSION;
cout<<pnumber<<endl;cin>>POPSIZE;
cout<<pbest<<endl;
========
反了,改成:
float DIMENSION;
float POPSIZE;
cin>>DIMENSION;
cout<<pnumber<<endl;cin>>POPSIZE;
cout<<pbest<<endl;float *pnumber=new float[DIMENSION];
float *pbest=new float[POPSIZE];
typedef struct
{
float *pnumber;
float *pbest;
float bestfitness;
float fitness;
float *pspeed;
int Total;
float Sum;
float Avg;
} indi;
然后定义indi a;
分配内存:a.pnumber=new float[长度变量];