吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2736|回复: 9
收起左侧

[求助] 我模糊了C结构体变量和结构体标签的区别

[复制链接]
ing 发表于 2020-2-29 23:40

因为我结构体没写标签名,然后出现了这种情况
捕获.PNG

捕获2.PNG

补上之后,警告信息消失了
捕获3.PNG

结构体的标签名和变量名的区别?为什么漏写标签名会导致类型不匹配

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hs_f 发表于 2020-3-1 00:13
学习经验,有助益。
eWVhaA 发表于 2020-3-1 00:17
本帖最后由 eWVhaA 于 2020-3-1 00:19 编辑

在 typedef 之前,ArcNode是没被定义的,换句话说你的定义和下面等同
[C] 纯文本查看 复制代码
typedef struct
{
  int a;
  struct A *next;
} ArcNode;


给 ArcNode 结构体里嵌套了一个next指针指向空结构体A,下面要用next的时候当然报错

这个东西本来等同两句话

[C] 纯文本查看 复制代码
struct Node {
  xxxxxx
};
typedef struct Node ArcNode;
absman1972 发表于 2020-3-1 00:50
本帖最后由 absman1972 于 2020-3-1 00:51 编辑

重點前面的網友已說明了
為了避免結構名稱及型態名稱的誤用,建議改成類似的寫法
[C++] 纯文本查看 复制代码
typedef struct _ArcNode
{
   int adjvex;
   _ArcNode* next;
}ArcNode;


或是
[C++] 纯文本查看 复制代码
typedef struct Node
{
   int adjvex;
   Node* next;
}ArcNode;

APWN 发表于 2020-3-1 01:24
感觉又学到了点点
一人之下123456 发表于 2020-3-1 07:25
观摩大佬们交流,学习学习
cjhk 发表于 2020-3-1 09:15
本帖最后由 cjhk 于 2020-3-1 09:16 编辑

struct  Node
{
   int adjvex;
   Node* next;
}ArcNode;

typedef struct
{
   int adjvex;
   Node* next;
}ArcNode;的比较,前者的Node和后者ArcNode是一回事。typedef和结构体结合之后,结构体变量名等同于结构体类型名。
cjhk 发表于 2020-3-1 09:19
C语言和C++语言  有些关键字或者语法是存在二义性的,不够严谨,这是C语言本身的缺陷。比如说static关键字,或者说数组下标越界,以及上面的结构体变量名和结构体类型名等。
慢慢磨吧,经验多了,慢慢就上手了。
ywcn 发表于 2020-3-1 09:44
类型名和变更名可以一样吗?
ConMedExer 发表于 2020-4-7 22:30
好贴,初入C语言,受益匪浅
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 05:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表