一个小疑点,请看内容
一个小问题,请看内容我现在有这样几个文件a.h,a.cppC/C++ code//a.hconst int ArrayCount 120typedef s
一个小问题,请看内容
我现在有这样几个文件a.h,a.cpp
C/C++ code//a.hconst int ArrayCount = 120;typedef struct{ int a[ArrayCount]; int data; int key; }DataType;extern void Initiate( DataType *G );//a.cppvoid Initiate( DataType *G ){ G->data = 0; G->key = 0; for ( int i = 0; i < ArrayCount; i++ ) { G->a[i] = 0; }}
我觉得这段代码不好,120这个数是我用另一个源文件b.cpp里的一个函数的参数带出来的,该函数声明如下
void Function( int &val1, int &val2 );
其中,求的的val2值就作为ArrayCount;
我想问的是,我如何不用120这个数给ArrayCount赋值,而用变量来给ArrayCount赋值, 因为120这个数使人看不明白什么意思。
给个解决的办法吧,谢谢!
[解决办法]#define
[解决办法]把ArrayCount改成别人你想要的名字就行了
[解决办法]那就不能用const int ..
还有不能 typedef struct
{
int a[ArrayCount];
....
//////////////////////////////////////////////////////////
既然是参数,那么作为指针
//a.h
extern int ArrayCount;
typedef struct
{
int *a;
int data;
int key;
}DataType;
extern void Initiate( DataType *G );
//a.cpp
int ArrayCount;
void Initiate( DataType *G )
{
G->a=(int *)malloc(ArrayCount*sizeof(int));
G->data = 0;
G->key = 0;
for ( int i = 0; i < ArrayCount; i++ )
{
G->a[i] = 0;
}
}
[解决办法]要么
[解决办法]意思就是 a[ArrayCount]是可以动态改变大小的吧
可以像楼上说的那样用动态分配
不过a[ArrayCount]是DataType结构体的一个成员
可以考虑
typedef struct
{
int *p;
int data;
int key;
}DataType;
然后将 malloc出来的指针赋给p