新手求解!关于C语言printf()函数的一个问题。

木子xi 2014-02-26 11:39:23
根据数据结构老师给的建立顺序表方法,自己照着谢了一下,但总是编译出错!
原来的代码:


编译错误:

这个错误我没有看懂,但是后来对照老师给的的发现了错误。
正确代码:

只不过是把主函数开始的printf("*****")放在了变量定义的后面就可以了。
虽然错误解决了,但是不知道为什么会这样,所以提出来问一下,希望知道原因的可以帮忙解答一下。
谢谢!

...全文
226 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baichi4141 2014-02-27
  • 打赏
  • 举报
回复
引用 2 楼 lsq19871207 的回复:
原则上没有啥问题,可能跟编译器有关吧 我简单评价一下你这段代码吧: 1、初始化函数的几点坑和错误

list initialize_list()
{
	list L;
	L.length = 0;
	return L;
}
首先是局部变量是不能return的,除非是你new出来的,这关系到变量作用域的问题,一定要理解并掌握啊! 其次是结构体初始化的问题:就仅你的这代码来说,你只初始化了list.length,list.elem呢?所有数据必须要进行合理的初始化,否则用的时候就都是坑。有两种方法,一是直接list L={0};另一种就是memset了 如果你非要写个函数的话,正确的初始化应该是(其一)

initialize_list(list &L)  //你传指针也行,但这种情况下一般传引用要好一些
{
     //
}
2、list create_list(list L) 同样是这个问题,传参要传引用或者指针,哪有直接返回结构这种写法啊,其实根本就没有必要返回,要是返回也得是list& create_list(list &L)
楼主问的是C语言,原则不同,没有引用
Eleven 2014-02-27
  • 打赏
  • 举报
回复
C语言的变量要定义在最前面,C++则没有这个限制。
信阳毛尖 2014-02-27
  • 打赏
  • 举报
回复
原则上没有啥问题,可能跟编译器有关吧 我简单评价一下你这段代码吧: 1、初始化函数的几点坑和错误

list initialize_list()
{
	list L;
	L.length = 0;
	return L;
}
首先是局部变量是不能return的,除非是你new出来的,这关系到变量作用域的问题,一定要理解并掌握啊! 其次是结构体初始化的问题:就仅你的这代码来说,你只初始化了list.length,list.elem呢?所有数据必须要进行合理的初始化,否则用的时候就都是坑。有两种方法,一是直接list L={0};另一种就是memset了 如果你非要写个函数的话,正确的初始化应该是(其一)

initialize_list(list &L)  //你传指针也行,但这种情况下一般传引用要好一些
{
     //
}
2、list create_list(list L) 同样是这个问题,传参要传引用或者指针,哪有直接返回结构这种写法啊,其实根本就没有必要返回,要是返回也得是list& create_list(list &L)
baichi4141 2014-02-27
  • 打赏
  • 举报
回复
C语言旧标准规定所有变量必须在第一条可执行语句前定义 新标准虽然早已制定,但在中国最多的还是执行旧标准的编译器,主要就是VS6.0
赵4老师 2014-02-27
  • 打赏
  • 举报
回复
将源代码的后缀由.c改为.cpp

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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