结构体数组引用的问题。

Mark0904 2011-03-14 12:34:26
/*在学数据结构时在anyviewds系统上做题出现如下错误。

*/
相关数据类型定义如下:
typedef enum {female,male} Sex;
typedef struct{
char *sport; // 项目名称
Sex gender; // 性别(女:female;男:male)
char schoolname; // 校名为'A','B','C','D'或'E'
char *result; // 成绩
int score; // 得分(7,5,4,3,2或1)
} ResultType;

typedef struct{
int malescore; // 男子总分
int femalescore; // 女子总分
int totalscore; // 男女团体总分
} ScoreType;


void Scores(ResultType *result, ScoreType *score)
/* 求各校的男、女总分和团体总分, 并依次存入数组score */
/* 假设比赛结果已经储存在result[ ]数组中, */
/* 并以特殊记录 {"", male, ' ', "", 0 }(域scorce=0)*/
/* 表示结束 */
{
int i= (result->schoolname - 'A');

for(i = 0; i < 5; i++)
//score[i].malescore = 0; ////////////这一句跟下面一句是等价的,其中任一句编译能通过。
(score+i)->malescore = 0;
score[i].femalescore = 0;
score[i].totalscore = 0;
for(; *result->sport; result++)
{
if(female == result->gender)
score[result->schoolname - 'A'].femalescore += result->score;
else
//score[result->schoolname - 'A'].malescore += result->score;
//////////这里上下两句代码也应该是等价的,怎么下面那句编译有错:Invalid Type-->
(score + result->schoolname - 'A')->malescore += result->score;
score[result->schoolname - 'A'].totalscore += result->score;
}
printf("malescore femalescore totalscore\n");
for(i = 0; i < 5; i++)
printf("%9d%9d%9d\n", score[i].malescore,
score[i].femalescore, score[i].totalscore);
}

//score[i].malescore = 0; ////////////这一句跟下面一句是等价的,其中任一句编译能通过。
//score[result->schoolname - 'A'].malescore += result->score;
//////////这里上下两句代码也应该是等价的,怎么下面那句编译有错:Invalid Type-->
(score + result->schoolname - 'A')->malescore += result->score;
...全文
490 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mark0904 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jialejiahi 的回复:]

刚才编译试了一下没有报错阿?
[/Quote]
我自己用codeblocks试了下编译没错误,运行结果也正确。
但用《数据结构》严蔚敏、吴伟民
自带的那个anyviewds系统做题时,编译就出错了。
for(i = 0; i < 5; i++)
{
score[i].malescore = 0;
//这两条语句应该是等价的。但如果把上面那句改成下面那句,编译成功,运行就错了。
//(score+i)->malescore = 0;
score[i].femalescore = 0;
score[i].totalscore = 0;
}

for(; *result->sport; result++)
{
if(female == result->gender)
score[result->schoolname - 'A'].femalescore += result->score;
else
score[result->schoolname - 'A'].malescore += result->score;
//这里上下两句代码也应该是等价的,但下面那句编译有错:Invalid Type-->
// (score + result->schoolname - 'A')->malescore += result->score;
score[result->schoolname - 'A'].totalscore += result->score;
}

//应该是这个anyviews编译器的问题。我们老师说这个编译器内核是另外自己写的,可能在这一点上支持得不好吧。
jialejiahi 2011-03-14
  • 打赏
  • 举报
回复
刚才编译试了一下没有报错阿?
masmaster 2011-03-14
  • 打赏
  • 举报
回复
Sex gender; // 性别(女:female;男:male)

Sex是什么类型数据
jialejiahi 2011-03-14
  • 打赏
  • 举报
回复
报的什么错,贴出来看看。
canican 2011-03-14
  • 打赏
  • 举报
回复
score + (result->schoolname - 'A') 加个括号可能会过
pengzhixi 2011-03-14
  • 打赏
  • 举报
回复
score + result->schoolname - 'A'
会解析为score[result->schoolname]-'A'
cuidx 2011-03-14
  • 打赏
  • 举报
回复
试试
((ScoreType *)(score + result->schoolname - 'A'))->malescore += result->score;

可能是类型转换时的问题
AnYidan 2011-03-14
  • 打赏
  • 举报
回复
有时不必非要按照提示找错误,有可能是别的地方因起的

有一次我给已编译好的程序加中文注释,结果是编译错误,删除了一句中文注释就好了
Mark0904 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jialejiahi 的回复:]

引用 7 楼 e3399 的回复:

引用 6 楼 jialejiahi 的回复:

刚才编译试了一下没有报错阿?

我自己用codeblocks试了下编译没错误,运行结果也正确。
但用《数据结构》严蔚敏、吴伟民
自带的那个anyviewds系统做题时,编译就出错了。
C/C++ code
for(i = 0; i < 5; i++)
{
sco……
[/Quote]
那就是这个编译器的问题了。呵呵。
jialejiahi 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 e3399 的回复:]

引用 6 楼 jialejiahi 的回复:

刚才编译试了一下没有报错阿?

我自己用codeblocks试了下编译没错误,运行结果也正确。
但用《数据结构》严蔚敏、吴伟民
自带的那个anyviewds系统做题时,编译就出错了。
C/C++ code
for(i = 0; i < 5; i++)
{
score[i].malescore = 0;
……
[/Quote]
嗯,编译器神马的有bug最烦人了。
yuxiabo1984 2011-03-14
  • 打赏
  • 举报
回复
我用vs2005 编译通过!
Mark0904 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lanxue_1988 的回复:]

引用 2 楼 pengzhixi 的回复:

score + result->schoolname - 'A'
会解析为score[result->schoolname]-'A'

++
[/Quote]
不知道有这个知识点呢。但我这种写法在codeblocks编译器里编译是能通过的。
(score + result->schoolname - 'A')->malescore += result->score;

如果是这样的话,score[result->schoolname]-'A'
那加对括号(score + (result->schoolname - 'A'))->malescore
还是会出现编译错误:Invalid Type-->
但在codeblocks上就不会。
碎碎念 2011-03-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]

score + result->schoolname - 'A'
会解析为score[result->schoolname]-'A'
[/Quote]
++
内容概要:本文系统研究了同步电机与构网型变流器在电力系统频率稳定中的动态特性,重点通过Simulink搭建IEEE9节点低惯量电力系统仿真模型,对比分析二者在功率扰动下的频率响应性能。研究深入探讨了构网型变流器采用下垂控制、虚拟同步机控制(VSM)、匹配控制及可调度虚拟振荡器控制(dVOC)等多种先进控制策略对系统惯量支撑和频率调节的作用机理,验证了其在提升弱电网频率稳定性方面的有效性,尤其在低惯量环境和应对突发功率波动时展现出优异的动态响应能力。研究成果兼具理论深度与工程实用价值,为高比例新能源接入背景下的电力系统稳定运行与控制策略优化提供了重要参考。; 适合人群:具备电力系统分析、自动控制理论基础,熟练掌握Matlab/Simulink仿真工具,从事新能源并网、电力电子化电网稳定性、构网型控制技术研究的研究生、科研人员及电力系统领域工程技术人员。; 使用场景及目标:① 掌握同步电机与构网型变流器的精确建模与仿真方法;② 理解并复现下垂、VSM、dVOC等核心控制策略的Simulink实现过程;③ 分析低惯量电网的频率失稳机理,定量评估不同控制策略对系统动态性能的改善效果;④ 支撑相关领域的学术研究、高水平论文复现、科研项目申报与工程方案设计。; 阅读建议:建议读者依据文中描述的IEEE9节点系统拓扑结构,循序渐进地搭建仿真模型,重点关注控制器关键参数(如虚拟惯量、阻尼系数)的设置及其对频率响应曲线(如超调量、恢复时间)的影响。务必动手实践,通过对比不同控制策略的仿真结果,深刻理解构网型变流器模拟同步机“自同步”和“惯量支撑”特性的物理本质,并可结合其他顶尖期刊文献进行交叉验证与拓展研究。
内容概要:本文档《工程建议 G99》(Issue 1 – Amendment 9,2022年10月3日发布)规定了自2019年4月27日起,将发电设备并联接入英国公共配电网络的技术要求和合规流程。文档明确了不同类型发电模块(Type A-D)的连接标准,涵盖系统分析、保护设置、频率与电压响应、电能质量、调试测试、并网模式(长期与短期并联)、孤岛运行、储能系统整合等方面的技术规范。此外,文档详细列出了各类测试要求(如LoM、RoCoF、LFSM-O等)、合规性验证流程、申报表格及修订历史,强调了与电网代码(Grid Code)的协调一致性,并针对小型发电安装、储能设备、网络安全等新增内容进行了补充。 适合人群:从事电力系统工程、可再生能源并网、配电网络设计的专业技术人员,以及发电设施开发商、电网运营商(DNO)、合规性审核人员和相关监管机构工作人员。 使用场景及目标:①指导发电设备合规接入英国配电网络;②为发电模块的设计、测试和调试提供技术依据;③支持DNO评估并网影响与系统稳定性;④确保新型能源(如储能、分布式发电)符合国家电网安全与运行标准。 阅读建议:本文为专业技术规范文件,建议结合实际工程项目参照使用,重点关注与自身发电类型(如光伏、风电、储能)相关的章节及最新修订内容(如Amendment 9中关于小型安装和网络安全的要求),并配合EREC G98、G100等相关文件共同理解。
内容概要:本文深入研究同步电机与构网型变流器在电力系统频率稳定性中的作用机制,通过Simulink搭建高保真仿真模型,系统对比两者在电网扰动下的动态响应特性。重点剖析构网型变流器在高比例新能源接入背景下对系统惯量支撑和频率调节的关键作用,采用非线性控制策略(如反步法、模型预测控制等)提升其动态性能,并通过仿真验证其在抑制频率波动、增强系统稳定方面的有效性。研究涵盖同步电机建模、构网型变流器控制策略设计、系统级仿真验证等关键环节,为构建新型电力系统提供理论支撑与技术路径。; 适合人群:具备扎实的电力系统分析、自动控制理论基础,熟练掌握Simulink仿真工具,从事新能源并网、电力电子变换器控制、电力系统稳定性分析等相关领域的科研人员、高校研究生及工程技术人员。; 使用场景及目标:① 掌握构网型变流器的数学建模与先进控制方法;② 深入理解其在提供虚拟惯量、参与一次调频中的物理机理;③ 学习并实践基于Simulink的复杂电力系统动态仿真技术;④ 为高比例可再生能源电力系统的稳定性分析与控制策略研究提供可复现的仿真平台和技术借鉴。; 阅读建议:建议读者结合文中所述的仿真模型与控制算法,动手复现Simulink案例,重点关注控制参数的设计原则及其对系统频率响应特性的影响,并通过对比实验深入理解构网型与跟网型变流器在控制本质、响应特性和应用场景上的根本差异。
代码转载自:https://pan.quark.cn/s/88c741a6a031 华为B310作为一款广受欢迎的4G无线路由器,由华为公司负责其设计与制造。该设备在世界范围内得到了普遍应用,特别是在家庭及小型办公场所,旨在为用户带来高速的移动宽带接入体验。B310的不同定制版本实际上是指运营商根据自身的网络布局和需求对设备进行的软件层面的调整,虽然硬件配置保持不变,但设备的操作系统(即固件)会呈现出差异。此类定制通常涵盖了网络频段的支持范围、特定功能的实现以及用户交互界面的设计。标题中所提及的"华为B310通用刷机固件和方法",意在提供一种能够适用于多种定制版本的路由器固件升级方案,用以解决潜在的软件故障或增强设备的工作效能。固件更新通常包含了对已知错误的修正、新功能的集成以及系统性能的改进。在实施刷机操作之前,必须确认所拥有的B310型号与所提供的固件版本具有兼容性,以防刷机过程中出现失败或导致设备无法正常工作的情况。压缩包内包含了进行刷机所需的所有必要材料: 1. **B310As-852_UPDATE_21.290.01.51.59.BIN**:该文件是华为B310路由器专用的固件升级包,其扩展名为BIN,是华为路由器系列中常见的固件格式。文件名中的数字序列和字母组合一般代表了固件的版本号,例如此文件对应的是版本21.290.01.51.59。此文件需要借助特定的软件工具和标准流程安装到路由器中。 2. **readme.doc**:这是一个文本文件,通常记录了刷机操作的详细步骤、操作中的注意事项以及常见问题的解决策略。在开始刷机之前,应仔细研读此文档,以确保依照正确的步骤执行。 3. **dc-unlocker2client_1277.exe**:...

70,038

社区成员

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

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