如图,creatOne没有返回一个值,但是可以成功编译并运行
编译器是code::block 16.01自带的mingw-gcc
如图,creatOne没有返回一个值,但是可以成功编译并运行
编译器是code::block 16.01自带的mingw-gcc
根据 K&R《C程序设计语言(第二版 · 新版)》的说法,“return语句后面可以没有任何表达式,此时函数不会向调用者返回任何值”。我做了几个测试,编译时只会出警告,“ ' return' with no value, in function returning non-void”,并不会报错。
在X86架构下, 函数的返回值一般是放到$EAX中的, 在你的例子中,很可能编译器"意外"或者有意的把
newst
的地址放到了这个寄存器, 所以你在main
中还是能得到这个返回值。你加个-Wall在你编译的时候, 应该会有警告。你也试试用不同的optimization level,看看结果会不会变化