微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的操作数到二进制*有'ab {aka结构a}'和'ab * {aka结构a *}'

我写了一个程序来交换数组中的两个结构,我的编码如下

#include <stdio.h> struct a { char *name; int id; char *department; int num; }; typedef struct a ab; void swap(ab *,ab *); int main(int argc,char *argv[]) { ab array[2] = {{"Saud",137,"Electronics",500},{"Ebad",111,"Telecom",570}}; printf("First student data:n%st%dt%st%d",array[0].name,array[0].id,array[0].department,array[0].num); printf("nSecond Student Datan%st%dt%st%dn",array[1].name,array[1].id,array[1].department,array[1].num); swap(&array[0],&array[1]); // printf("") return 0; } void swap(ab *p,ab *q){ ab tmp; tmp = *p *p = *q; *q = tmp; }

编译它会给出一个错误

newproject.c:在函数“swap”中:

newproject.c:26:3:错误:无效的操作数为二进制*(有'ab {aka

struct a}'和'ab * {aka struct a *}')

* P = * Q;

什么错误

如何找出我们是否真的使用48位,56位或64位的指针

传递结构指针与传递结构

寻找指向argv 的指针,所以我可以改变它

一个void指针(数据)投射到一个函数指针

是否有可能在同一台计算机上的两个不同的程序之间有一个共同的指针

C ++发现指针错误

通过使用指向创build对象的指针访问冲突错误

仍然不明白指向C中数组的数组的指针

为什么系统在使用指针Windows时分配更多内存?

如何通过一个mmap映射内存指针来立即刷新写入?

在第26行(前一行)的末尾有一个缺失的分号。

tmp=*p

由于这个原因,编译器认为下一行是同一个语句的一部分,这意味着整个语句被解释为:

tmp=*p * p = *q;

第二个*被看作是两个操作数的乘法 – *p和p – 这是错误信息的来源:

无效的操作数到二进制* (有'ab {aka结构a}'和'ab * {aka结构a *}')

(因为*p的类型是ab ,而p的类型是ab * )。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐