除了已經提供了結構的建議......,
你的問題也有文件(模塊)之間的數據的可視性做。
這裏是great link將闡明如何創建和定義的信息,例如在一個文件中(通常是.h)中的結構體,將值分配給所述結構成員和在另一個文件中使用它們(可能是一個。c)並修改第三個文件中的值。 (可能也是.c)。
至於陣列的結構;將其創建在將使用它的任何.c模塊包含的頭文件中。它可能看起來像:
#define NUM_EMPL 10 //number of employees
typedef struct {
char last[40];
char first[40];
float payrate;
int hours;
float gross;
float tax;
float net;
} EMPLOYEE;
extern EMPLOYEE empl[NUM_EMPL], *pEmpl; //'extern' keyword is used only in this file
然後,在所有 .C模塊(一個或多個),其中這個結構將被使用,文件頂部的地方(即功能不中),創建即在.h文件中定義的結構的新實例:
EMPLOYEE empl[NUM_EMPL], *pEmpl; //same as in .h file except without 'extern' keyword
然後,函數中你可以初始化結構的指針版本的結構定義的開始,填充值結構成員;
void func1(void)
{
Empl = &empl[0]; // '[0]' guarantees pointer location.
//finally assign values
//(can be put into loop or similar to assign all n employess)
strcpy(pEmpl[0].last, "Smith");
strcpy(pEmpl[0].first, "John");
pEmpl[0].payrate = 100.00;
pEmpl[0].hours = 40;
//and so on...
//pass pointer to struct to another function
func2(pEmpl);
}
或者,您會收到一個指向結構作爲參數:
(下面的函數可以在不同的.c文件,以更好地展示數據的文件間的知名度。)
void func2(EMPLOYEE *e)
{
// assign values
//(can be put into loop or similar to assign all n employess)
strcpy(e[0].last, pEmpl[0].last);
strcpy(e[0].first, pEmpl[0].first);
e[0].payrate = pEmpl[0].payrate;
e[0].hours = pEmpl[0].hours;
//and so on...
}
你的意思是你想要一個數組來存儲用戶的名字,姓氏,工資率,工作時間,總工資等嗎?這不能在C中完成;一個數組的元素都必須是相同的類型,所以你不能像總毛錢那樣在同一個數組中存儲像名字這樣的字符串。您可以爲每個用戶創建一個結構並創建一個用戶結構的數組或鏈接列表。 – verbose