控制结构数组上的双指针

윤성필*_*윤성필 1 c arrays struct function-calls double-pointer

我需要为指针打印一个名字.但它根本不起作用.控制台停止..

也许问题出在"find_young"函数上.我不知道是什么问题以及如何解决它.我能为正确的代码做些什么.

以下是我的代码.

========

typedef struct {
    char *name;
    int age; 
} PERSON;

PERSON s[3] = { {"ACE", 25}, {"HEART" ,28}, {"CLOVER", 40} };

void find_young(PERSON **p) {
    int i;

    for (i = 0; i < 1; i++) {
        if (s[i].age > s[i+1].age) {
            p = &s[i+1];
        }
    }
};

void Ex1()
{   
    struct PERSON *p;
    p = &s[0];

    find_young(&p);
    printf("youngest man is %s.", p->name);
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

您在错误的类型之间进行分配,编译器应该警告您:

p = &s[i + 1];
Run Code Online (Sandbox Code Playgroud)

在这里,表达式&s[i + 1]是一个指向PERSON,但p是一个指针的指针PERSON.不太一样的事情.

你想要的是什么

*p = &s[i + 1];
Run Code Online (Sandbox Code Playgroud)