我有一个结构数组,其结构如下:
struct patient {
int pictures[2];
int personal_number;
char patient_name[FILE_PATIENT_NAMES + 1];
int num_of_matches;
};
typedef struct patient Patient;
Patient patientregister[5];
我有以下两个功能:
/********* function declaration *********/
Patient *search_patient(Patient patientregister[], int num_of_patients);
Patient *search_by_personaNumber(Patient *matches[],
Patient patientregister[], int num_of_patients);
代码从*search_patient
开始,然后转到*search_by_personalNumber
。 *search_patient
内声明了另一种结构数组:Patient matches[5];
,其想法是将Patient matches[5];
的指针发送到*search_by_personalNumber
。然后将其与用户正在搜索的匹配项一起返回给*search_patient
。我的问题是如何将结构数组的指针发送到另一个函数,如何使用该指针填充结构数组并将指针发送回原始函数,在我的情况下是*search_patient
?
答案 0 :(得分:1)
将数组隐式地(很少有例外)转换为指向表达式中第一个元素的指针。
因此,如果在函数search_patient
中声明了这样的数组
Patient *search_patient(Patient patientregister[], int num_of_patients)
{
Patient matches[5];
//...
}
然后将其通过以下方式传递给函数search_by_personaNumber
Patient *search_patient(Patient patientregister[], int num_of_patients)
{
Patient matches[5];
//...
search_by_personaNumber( matches, 5 );
//...
}
实际上,函数search_patient
中不需要使用函数search_by_personaNumber
的返回值。但是,如果您确实需要使用它,则可以编写
Patient *search_patient(Patient patientregister[], int num_of_patients)
{
Patient matches[5];
//...
Patient *p = search_by_personaNumber( matches, 5 );
//...
}