新手求解!关于C语言printf()函数的一个有关问题
新手求解!关于C语言printf()函数的一个问题。
根据数据结构老师给的建立顺序表方法,自己照着谢了一下,但总是编译出错!
原来的代码:


编译错误:

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

只不过是把主函数开始的printf("*****")放在了变量定义的后面就可以了。
虽然错误解决了,但是不知道为什么会这样,所以提出来问一下,希望知道原因的可以帮忙解答一下。
谢谢!
------解决方案--------------------
C语言旧标准规定所有变量必须在第一条可执行语句前定义
新标准虽然早已制定,但在中国最多的还是执行旧标准的编译器,主要就是VS6.0
------解决方案--------------------
原则上没有啥问题,可能跟编译器有关吧
我简单评价一下你这段代码吧:
1、初始化函数的几点坑和错误
首先是局部变量是不能return的,除非是你new出来的,这关系到变量作用域的问题,一定要理解并掌握啊!
其次是结构体初始化的问题:就仅你的这代码来说,你只初始化了list.length,list.elem呢?所有数据必须要进行合理的初始化,否则用的时候就都是坑。有两种方法,一是直接list L={0};另一种就是memset了
如果你非要写个函数的话,正确的初始化应该是(其一)
2、list create_list(list L)
同样是这个问题,传参要传引用或者指针,哪有直接返回结构这种写法啊,其实根本就没有必要返回,要是返回也得是list& create_list(list &L)
------解决方案--------------------
C语言的变量要定义在最前面,C++则没有这个限制。
------解决方案--------------------
楼主问的是C语言,原则不同,没有引用
------解决方案--------------------
将源代码的后缀由.c改为.cpp
根据数据结构老师给的建立顺序表方法,自己照着谢了一下,但总是编译出错!
原来的代码:
编译错误:
这个错误我没有看懂,但是后来对照老师给的的发现了错误。
正确代码:
只不过是把主函数开始的printf("*****")放在了变量定义的后面就可以了。
虽然错误解决了,但是不知道为什么会这样,所以提出来问一下,希望知道原因的可以帮忙解答一下。
谢谢!
------解决方案--------------------
C语言旧标准规定所有变量必须在第一条可执行语句前定义
新标准虽然早已制定,但在中国最多的还是执行旧标准的编译器,主要就是VS6.0
------解决方案--------------------
原则上没有啥问题,可能跟编译器有关吧
我简单评价一下你这段代码吧:
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语言的变量要定义在最前面,C++则没有这个限制。
------解决方案--------------------
楼主问的是C语言,原则不同,没有引用
------解决方案--------------------
将源代码的后缀由.c改为.cpp