我有一个名为members的结构,它包含一堆char数组和整数。结构已在Header.h中声明,并在source.c中的“struct members pt”中定义,在main中。从这里开始运行for循环5次并将变量添加到pt[x]
中的字符数组和整数。
现在我需要能够从一个名为void search(int a);
的函数中访问它(可能不应该是一个空,因为我希望它返回一个值。但我稍后会修复它)
无效搜索应该做的基本
int willReturn[10];
int b = 0;
for(int x = 0; x<a; x++)
{
if(pt[x].hasPayed == 0)
{
willReturn[b] = x;
b++;
}
}
该代码可能有问题,但我需要知道的是我如何访问pt[x].hasPayed
。
有任何想法吗?
我不想使用任何全局变量。
提前谢谢。
答案 0 :(得分:0)
将指针作为参数传递给pt
进行搜索。例如void search(int a, struct members *pt)
。
答案 1 :(得分:0)
另一种方法,如果你不想传递指针。将pt
作为静态变量放在函数中。
struct members** ____get_pt(){
static struct members pt[ /* size */ ];
/*
or for dynamical size,
static struct members* pt;
*/
return &pt;
}
// Define a macro for convenience, above where you want to use 'pt'.
#define PT (*____get_pt())
然后你可以在任何地方使用PT[x].hasPayed
,而不需要全局变量。
但是,这可能无法改善您的代码......
答案 2 :(得分:0)
下面的示例代码可能会对您有所帮助。
<强> header.h 强>
struct members {
int hasPayed;
};
的 main.c中强>
#include <stdio.h>
#include <string.h>
#include "main.h"
typedef struct members MEMBERS;
void print_member(MEMBERS *pt) {
int i;
for(i =0 ; i< 10; i++)
{
printf(" %d\n",pt[i].hasPayed);
}
}
void main () {
MEMBERS pt[10];
int i;
for(i =0 ; i< 10; i++)
{
pt[i].hasPayed= i;
}
print_member(pt);
}
而不是print_member代码您的搜索逻辑。