void数据类型的函数有返回值么?
对void数据类型一直不理解 感觉很抽象的东西
void 只能声明指针 而且不能声明数组
void *a 中*a不能被引用
但是从这个程序中看:
void fn(void y);
void fo() ;
main()
{
void *a ; //void a;语法错误
int l ;
printf("%d\n", a) ; //printf("%d\n", *a) ;语法错误
}
void fn(void y)
{
return 0 ;
}
void fo()
{
}
这个程序编译没问题
但是其中函数fn却无法调用
fn(*a); fn(a); fn(l); fn(fo()); 都有语法错误
上面是WIN-TC中的编译结果
下面是C-FREE中的编译成功的程序
#include <stdio.h>
void fn(void *y); // void fn(void y);语法错误
void fo() ;
main()
{
void *a ;
int l ;
printf("%d\n", a) ;
fn(a) ; //其他的写法也是语法错误
}
void fn(void *y) //void fn(void y)语法错误
{
//return 0;语法错误
}
void fo()
{
}
这也算TC的一个BUG了吧
以前没仔细研究过
但是现在还是不太清楚它是在内存中是怎么储存的
为什么现在动不动就有人说TC的BUG?
TC面世几十年了,在以前TC独霸一方时,都没听说过的BUG现在都冒出来!
到底是你自己对语法 对IDE的错误认识造成的?还是真的是TC的BUG?
话是那么说 我也这么想
但是该这么解释这个东西
void fn(void y)
{
return 0 ;
}
如果这么定义这个函数 那这个函数就没办法用
有BUG也有可能 当你别无选择的时候 会绕过这个问题去想其他的办法
你不会叫它为BUG
但是现在大家很少去用这个东西的时候 就会去挑它的毛病
不是不可能