Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从struct分配给struct*类型时不兼容的类型_C_Pointers_Struct_Dynamic Memory Allocation - Fatal编程技术网

从struct分配给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];

我不明白为什么会出现这个错误:错误是:“当从类型‘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
}
#包括
#包括
#包括
类型定义结构{
字符名[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。很抱歉误解,我重述了我的问题,这是我的错误:)非常感谢误解,我重述了我的问题,这是我的错误:)非常感谢