关于gcc编译错误expected expression before token的一些想法

在学习数据结构时,将算法实现的过程中总是出现一些意想不到的错误,我想大概是对相应的编程语言认识太过浅薄的缘故。但这不是什么大问题,本来就是在学习嘛,能发现更多的问题当然更好,只要能耐住性子解决,相信比那些没有问题的人学到的更多。

因为挂科,所以在努力学习C语言版的数据结构。既然挂科了,自身掌握的知识当然有限,对C语言的认识也仅限于那些基本的语法,甚至还没学全。这种状态下学习自然问题多多,今天遇到的问题以后肯定还会遇到,所以记录下今天解决问题的思路,下次就不会这么纠结了。像昨天废了好几个小时的折腾,才发现原来只是几个字母写错了,而调试信息中每次都会出现,我却没有仔细认清楚,借着这个教训,今天能在一会的功夫里解决问题这是太好了。

用gcc编译一个关于十字链表的实现时,总是提示"expected expression before '{' token"

错误的一行内容是"(*p) = {i,j,(*G).xlist[j].firstin,(*G).xlist[i].firstout,NULL};"

这个*p是在函数内定义的一个结构体别名,而结构体的定义是在函数外的,所以在整体赋值的时候总是出错。通过百度才知道结构和数组在定义时赋值叫做初始化,能用一个{}整体赋值,而定义以后再想要赋值则只能一次给一个成员赋值,不能用{}。不知道在用vc++编译时怎么样,反正用gcc是不行。要非想这么用,那就得这么写。

(*p) = (struct ArcBox){i,j,(*G).xlist[j].firstin,(*G).xlist[i].firstout,NULL};

这个ArcBox是结构体的名字,根据实际情况修改。据说这是c99标准才能用的,我也没有深入研究过,大体就是这么回事。

虽然是一个很简单的问题,但对像我这样摇摆不定的人来说,也许就这么点难题,就会改变对整个课程的看法,从此不再触碰,那真是一件相当遗憾的事。事物总是有两面性的,一旦坚定了信心,再碰到这类小问题就成了趣味小实践,对整个学习活动有好的推动作用,很有成就感的。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值