我有一个用于获取某个成员的结构体数组,我遇到的问题是我只想访问结构体的特定成员,而不是整个结构体本身。
所以例如如果我的结构是这样声明的:

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的地址。

10-08 04:54