我不明白为什么会收到此错误:错误是:“从类型'PERSOANA {aka struct}分配给类型'PERSOANA * {aka struct *}'时的类型不兼容” 您能解释一下哪里出了错吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char name[20];
char name2[20];
char cnp[15];
} PERSON;
PERSON read_array(int n);
int main()
{
int n;
printf("n = ");
scanf("%d", &n);
PERSON *v;
v = read_array(n); //here i get the error
return 0;
}
PERSON read_array(int n) {
PERSON *v;
v = malloc(n * sizeof(PERSON));
for(int i = 0; i < n; i++) {
printf("name=");
gets(v[i].name);
//more instr
}
return v; // and also here
}
答案 0 :(得分:2)
返回指向PERSON
而不是PERSON
的指针。
// PERSON read_array(int n);
PERSON *read_array(int n);
// ^
// PERSON read_array(int n) {
// v
PERSON *read_array(int n) {
答案 1 :(得分:0)
我不明白为什么会出现此错误:从PERSON类型分配给PERSON类型时,类型不兼容。
我有理由相信您不会遇到该错误,但是如果您确实如此,则应该切换到更好的编译器。我推测您得到的错误是
Incompatible types when assigning to type PERSON * from type PERSON
,因为实际上,这是您要尝试的,因为您已声明了函数read_array()
。
从实现和使用看来,您似乎希望该函数返回指向结构的指针,而不是该结构的副本。那是
PERSON *read_array(int n);
...和功能定义相同。