我有一个用于获取某个成员的结构体数组,我遇到的问题是我只想访问结构体的特定成员,而不是整个结构体本身。
所以例如如果我的结构是这样声明的:
static _Plyr {
char* firstName;
int age;
char* lastName;
}
typedef struct _Plyr Player;
我有一张桌子...例如
static Player Table[NUM] = {
{"John", 24, "Wall"},
{"Carmelo", 33, "Anthony"},
....
}
我想有一个函数,该函数可以根据一个人的名字返回一个人的姓氏。所以我有一个* char函数,我知道如何取回整个结构,但是在这种情况下,我只想从特定的结构中获取某个成员,即他们的姓氏...所以我需要修正我的return语句
我的代码的一部分
char* getLastName(char* string){
char* first;
for (int i = 0; i < REGCOUNT; i++){
first = Table[i].firstName;
if (strcmp(first, str) == 0){
return &Table[i].lastName;
}
}
}
我试过
Table[i].lastName, Table[i]->lastName,
...似乎都没有用。我知道&Table[i]
为我提供了结构本身的地址,然后可以从那里访问它,但是我只是想获取成员本身而不是整个结构。感谢您的时间 最佳答案
检查以下代码,
typedef struct _Plyr {
char* firstName;
int age;
char* lastName;
} Player; /* typedef structure _Plyr into Player*/
static Player Table[] = { /* Table with NUM of items*/
{"John", 24, "Wall"},
{"Carmelo", 33, "Anthony"},
---------------------------
---------------------------
};
#define NUM (sizeof(Table)/sizeof(Player)) /* Maximum number of items in table */
char* getLastName(char* string){
char* first;
for (int i = 0; i < NUM; i++){
first = Table[i].firstName;
if (strcmp(first, string) == 0){
return Table[i].lastName;
}
}
}
检查代码中添加的注释。
&Table[i].lastName
不是char*
,您必须返回Table[i].lastName
以返回lastName
的地址。