【发布时间】:2016-07-27 02:13:40
【问题描述】:
我有一个关于结构的静态成员的问题 这是场景:
即使从另一个 C 文件中的函数退出后,也需要二维数组变量来保留其值。从 main() 到另一个 C 文件的后续调用,对该函数的调用将使用最后一个值并继续进行计算以生成和更新新值(也保留)。所以,我认为我需要为该数组使用静态。
二维数组是二维结构的成员。我需要二维结构来识别二维数组。假设我用成员 [5] [5] 获得了身份 [行] [列],我需要在 main() 的整个调用过程中静态定义成员。但我注意到,C 中不允许结构成员的静态。
我正在尝试的代码:
//in function.h
#define row 2
#define column 5
int function(int rowNUM);
//in function.c
int function(int rowNUM)
{
typedef struct {
static int member[5][5];
int y[5][5];
int forg;
} mystruct;
mystruct identity[row][column];// declare the identity as structure array
int columnNUM;
int c;
int d;
//----try to initialize member to 1
for (columnNUM=0;columnNUM<column;columnNUM++)
{
for (c=0;c<5;c++)
{
for(d=0;d<5;d++){
identity[rowNUM][columnNUM].member[c][d]=1;
}
}
}
//----try to update member--- The values should retain for subsequent call from main
for (columnNUM=0;columnNUM<column;columnNUM++)
{
for (c=0;c<5;c++)
{
for(d=0;d<5;d++){
identity[rowNUM][columnNUM].member[c][d]=1+identity[rowNUM][columnNUM].member[c][d]; // to update member new value
}
}
}
}
// in main.c
main()
{
function(1);
function(2);// member here is in different identity from function (1)
function(1);//member should retain its value from function(1)
function(2);//member should retain its value from function(2)
}
如果这不是实现目标的方式,欢迎提出任何其他建议。 我是编程新手,请帮帮我。
【问题讨论】:
标签: c