从struct分配给struct*类型时不兼容的类型
我不明白为什么会出现这个错误:错误是:“当从类型‘PERSOANA{aka struct}’分配给类型‘PERSOANA*{aka struct*}’时,类型不兼容” 你能解释一下哪里错了吗从struct分配给struct*类型时不兼容的类型,c,pointers,struct,dynamic-memory-allocation,C,Pointers,Struct,Dynamic Memory Allocation,我不明白为什么会出现这个错误:错误是:“当从类型‘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];
#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
}
#包括
#包括
#包括
类型定义结构{
字符名[20];
字符名称2[20];
char-cnp[15];
}人;
人读数组(int n);
int main()
{
int n;
printf(“n=”);
scanf(“%d”和“&n”);
第五人;
v=read_数组(n);//这里我得到了错误
返回0;
}
个人读取数组(整数n){
第五人;
v=malloc(n*sizeof(人));
对于(int i=0;i
返回指向人
的指针,而不是对象人
// PERSON read_array(int n);
PERSON *read_array(int n);
// ^
// PERSON read_array(int n) {
// v
PERSON *read_array(int n) {
返回指向
PERSON
的指针,而不是对象PERSON
// PERSON read_array(int n);
PERSON *read_array(int n);
// ^
// PERSON read_array(int n) {
// v
PERSON *read_array(int n) {
我不明白为什么会出现这样的错误:当从类型PERSON分配给类型PERSON时,类型不兼容
我有理由相信你不会得到那个错误,但是如果你真的得到了,那么你应该换一个更好的编译器。我推测你得到的错误是
Incompatible types when assigning to type PERSON * from type PERSON
,因为考虑到函数read\u array()
的声明,这实际上就是您要做的
从实现和使用来看,您似乎希望该函数返回指向结构的指针,而不是该结构的副本。那就是
PERSON *read_array(int n);
。。。在函数定义中也是如此
我不明白为什么会出现这样的错误:当从类型PERSON分配给类型PERSON时,类型不兼容
我有理由相信你不会得到那个错误,但是如果你真的得到了,那么你应该换一个更好的编译器。我推测你得到的错误是
Incompatible types when assigning to type PERSON * from type PERSON
,因为考虑到函数read\u array()
的声明,这实际上就是您要做的
从实现和使用来看,您似乎希望该函数返回指向结构的指针,而不是该结构的副本。那就是
PERSON *read_array(int n);
。。。函数定义中也是如此。声明返回结构时,尝试返回指向结构的指针。
PERSON*read_array(int n)
应该是正确的语法。请完整、逐字地引用错误消息。你所引用的内容不太可能是准确和完整的。现在它可以工作了,thx很多朋友!:)v的类型为PERSON*,函数原型的返回类型为PERSON。在声明返回结构时,您尝试返回指向结构的指针。PERSON*read_array(int n)
应该是正确的语法。请完整地引用错误消息。你所引用的内容不太可能是准确和完整的。现在它可以工作了,thx很多朋友!:)v的类型是PERSON*,函数原型的返回类型是PERSON。很抱歉误解,我重述了我的问题,这是我的错误:)非常感谢误解,我重述了我的问题,这是我的错误:)非常感谢