首页 > 解决方案 > 我如何访问 typedef 结构中的变量

问题描述

好吧,我最近才开始学习编码,我几乎不明白。在程序的 main() 部分之前,我有这个。

typedef struct verado
{
    int id;
    char nev[30];
    char verCs[4];
    char email[30];
    int adas;
};

这存储了每个变量的 10 个。此外,我还有几个功能,其中一些在彼此内部,我无法从上述部分访问变量。

void email(verado *v,int *h)
{
    char vercs[4];
    int opc;
    printf("1:A+ 2:B+ 3:AB+ 4:0+ 5:A- 6:B- 7:AB- 8:0-\n") ;
    scanf(" %d", &opc);

    switch(opc)
    {
    case 1:
        vercs[0]='A';vercs[1]='+';vercs[2]='\0';  
        printf("%s %s", vercs,(*v)[1].verCs,*h );
        break;  
    default:  
        printf("\nerror\n");
        break;
    }
    return 0;
}

进一步,它需要能够将选定的血型与存储的 ppl 的血型进行比较,但如果我无法找到如何访问它们,我就无法做到这一点。

标签: c

解决方案


通常,要访问结构的所谓“成员变量”,您必须使用点符号,例如在这个不同问题的答案中使用的点符号。

但是,在您的情况下,您的函数可以访问指针作为参数。所以你实际上没有一个实例struct verado,你有一个指向它的指针。
这意味着您应该使用箭头运算符。例如v->id访问变量id
箭头的作用与此相同:(*v).id. 它取消引用变量,然后访问成员变量。

正如有人在评论中解释的那样,您还想给您struct verado的类型名称。这样您就不必struct verado每次都输入。因此,展示我刚才所说的内容的小示例可能如下所示:

#include<stdio.h>

typedef struct verado {
    int id;
} typeOfVerado;

void email(struct verado *v){
    printf("verado id: %d\n", v->id);
}

void main(){
    typeOfVerado myVerado  = { id: 3};
    email(&myVerado);
}

我不是最精通 C 语言的人,但我希望这足以让您对初学者有所了解。


推荐阅读