读书人

一个小疑点请看内容

发布时间: 2012-04-26 14:01:31 作者: rapoo

一个小问题,请看内容
我现在有这样几个文件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;
}
}



[解决办法]
要么

探讨

#define

[解决办法]
意思就是 a[ArrayCount]是可以动态改变大小的吧
可以像楼上说的那样用动态分配
不过a[ArrayCount]是DataType结构体的一个成员
可以考虑
typedef struct
{
int *p;
int data;
int key;
}DataType;

然后将 malloc出来的指针赋给p

读书人网 >C语言

热点推荐