访问没有结构为全局的结构

时间:2014-03-21 12:18:12

标签: c arrays struct

我有一个名为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。 有任何想法吗? 我不想使用任何全局变量。 提前谢谢。

3 个答案:

答案 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代码您的搜索逻辑。