![](/img/trans.png)
[英]Error: incompatible types when assigning to type 'values' from type 'void *'?
[英]Error: incompatible types when assigning to and returning to type
我制作了一個程序來更新某些類型結構,但是在編譯時發生了兩個錯誤,我的程序如下:
#include <stdio.h>
struct a {
char *name;
int id;
char *department;
int num;
};
typedef struct a ab;
void swap(ab *,ab *);
ab * update(ab *);
int main(int argc,char *argv[])
{
ab array[2]={{"Saud",137,"Electronics",500},{"Ebad",111,"Telecom",570}};
ab *q;
*q=update(&array[0]);
}
ab * update(ab *p)
{
p->name="Talha";
p->id=234;
p->department="Civil";
p->num=567;
return *p;
}
編譯時,在分配和返回指針時出現兩個錯誤。 請通知我的錯誤,並進行更正。 錯誤是
newproject.c: In function ‘main’:
newproject.c:29:4: error: incompatible types when assigning to type ‘ab {aka
struct a}’ from type ‘ab * {aka struct a *}’
*q=update(&array[0]);
^
newproject.c: In function ‘update’:
newproject.c:56:9: error: incompatible types when returning type ‘ab {aka
struct a}’ but ‘ab * {aka struct a *}’ was expected
return *p;
^
刪除*作為return *p;
。 您想返回一個指針地址,而不是指向的數據。 這就是編譯器錯誤的原因。
請注意, ab *q; *q=update(&array[0]);
ab *q; *q=update(&array[0]);
也不起作用,因為q
不能指向有效數據。 此代碼將導致程序崩潰或類似事件。
參見以下內容:將數據復制/掃描到未初始化的指針時發生的神秘崩潰或“分段錯誤” 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.