struct指针类型的问题

蓝粽子 2014-02-16 07:45:30


//代码片段
//定义链表结构体
typedef struct
{
DataType data;
struct LinkNode* next;

}LinkNode;

typedef LinkNode* LinkList;

....
//在使用代码中有如下片段
tempNode->next = malloc (sizeof(LinkNode));
tempNode = tempNode->next;


编译时代码片段会出现如下警告
Description Resource Path Location Type

incompatible pointer types assigning to 'LinkNode *' from 'struct LinkNode *' [-Wincompatible-pointer-types] LinkListOperator.c /DataStructure/src/LinearList/LinkList line 23 C/C++ Problem

Description Resource Path Location Type
incompatible pointer types assigning to 'struct LinkNode *' from 'LinkNode *' [-Wincompatible-pointer-types] LinkListOperator.c /DataStructure/src/LinearList/LinkList line 22 C/C++ Problem

两个指针类型的问题,那么请问 struct LinkNode* 与 LinkNode* 声明的变量有何不同?编译器为何认为他们是不同类型的指针?

...全文
380 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝粽子 2014-02-17
  • 打赏
  • 举报
回复
引用 2 楼 steedhorse 的回复:
你的struct本身是匿名的,它只有一个typedef出来的名字叫LinkNode。 既然LinkNode已经是一个类型名,为什么定义成员变量的时候还使用“struct”?
多谢,懂了。
蓝粽子 2014-02-17
  • 打赏
  • 举报
回复
引用 1 楼 u012210441 的回复:
因为你用tyepedef定义了一个新类型,后面用到它是不用struct的
多谢,懂了。
蓝粽子 2014-02-17
  • 打赏
  • 举报
回复
thank all, 因为我使用的是,typedef struct名称,所以会出现警告。多谢多谢各位。
Gonefar 2014-02-17
  • 打赏
  • 举报
回复
typedef struct _LinkNode
{
    DataType data;
    struct _LinkNode* next;
 
}LinkNode;
一般是这样写的,注意与你的区别。
buyong 2014-02-17
  • 打赏
  • 举报
回复
struct LinkNode
{
    DataType data;
    struct LinkNode* next;
 
};
蓝粽子 2014-02-17
  • 打赏
  • 举报
回复
引用 1 楼 u012210441 的回复:
因为你用tyepedef定义了一个新类型,后面用到它是不用struct的
嗯,也没有用到,只是在next赋值的时候出现的警告,我把代码贴全了一些。 帮我看看,完全不知道怎么避免这个警告。
蓝粽子 2014-02-17
  • 打赏
  • 举报
回复
引用 2 楼 steedhorse 的回复:
你的struct本身是匿名的,它只有一个typedef出来的名字叫LinkNode。 既然LinkNode已经是一个类型名,为什么定义成员变量的时候还使用“struct”?
我再贴的全一些。


...
LinkNode* tempNode = charsList;

	while(tempNode->data != '\n')
	{
		tempNode->next = (LinkNode*) malloc (sizeof(LinkNode));
		tempNode = tempNode->next;

		int tempData = getchar();
		tempNode->data = tempData;
	}

	tempNode->next = NULL;
正如你所说的,我并没有在使用过程中用 struct ListNode* 来进行变量声明,但由于结构体中的 变量声明为struct ListNode*, 所以next指针赋值时会出现警告。
晨星 2014-02-16
  • 打赏
  • 举报
回复
你的struct本身是匿名的,它只有一个typedef出来的名字叫LinkNode。 既然LinkNode已经是一个类型名,为什么定义成员变量的时候还使用“struct”?
zx_love 2014-02-16
  • 打赏
  • 举报
回复
因为你用tyepedef定义了一个新类型,后面用到它是不用struct的
内容概要:本文针对交直流混合数据中心园区的能源供应与算力资源协同问题,提出了一种多源-算力协同供电协调规划方法。该方法深度融合电力系统与信息计算系统,综合考虑光伏、风电、市电等多种能源形式与算力负载的时空耦合特性,通过构建多目标优化模型实现能源供给与算力需求的动态匹配与联合优化。研究设计了兼顾经济性、能效性与供电可靠性的综合评价体系,并采用Matlab进行建模仿真,对不同运行场景下的规划方案进行了对比分析,有效验证了所提方法在降低综合运营成本、提升能源利用效率和增强系统韧性的优越性能。; 适合人群:具备电力系统、能源管理、计算机系统或自动化等相关专业背景,从事数据中心、综合能源系统(IES)、新能源优化、算力网络等交叉领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为交直流混合架构的数据中心园区提供科学合理的多能协同供电与算力资源联合规划方案;②实现算力任务调度与多源供电策略的深度协调优化,最大化可再生能源消纳,提升整体能源效率与系统运行可靠性;③为其他涉及“能源-信息”深度融合的综合能源系统优化调度研究提供理论参考与Matlab代码实现基础。; 阅读建议:本文是典型的跨学科交叉研究,阅读时应重点关注其多目标优化建模的构建逻辑、多源-算力协同机制的设计原理以及目标函数与约束条件的数学表达。建议结合所提供的Matlab代码,动手复现仿真过程,深入理解模型求解细节,从而更好地掌握该方法的核心思想,并尝试将其迁移应用于自身相关的优化问题研究中。

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧