c语言程序缺少头文件为啥还可以运行,并得到正确结果?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序缺少头文件为啥还可以运行,并得到正确结果?相关的知识,希望对你有一定的参考价值。
int main()
int n;
int i;
int A[100];
int B[100];
int C[2];
printf("输入一个整数n且n<100:");
scanf("%d",&n);
for ( i = 0 ;i < n ;i ++)
A[i]=rand()%2;
for (i = 0 ;i < n ;i ++)
printf("%3d",A[i]);
printf("\n");
memset(C,0,sizeof(C));
for(i=0;i<n;i++)
C[A[i]]++;
for(i=1;i<=1;i++)
C[i]=C[i]+C[i-1];
for(i=n-1;i>=0;i--)
B[C[A[i]]-1]=A[i];
C[A[i]]--;
for(i=0;i<n;i++)
printf("%3d",B[i]);
printf("\n");
return 0;
以上程序对一个数组进行计数排序,数组中的元素为0或者1.该程序在VC下运行结果正确。为什么?输出不是需要#include<stdio.h>,调用memset函数不是需要#include<string.h>,调用rand()函数不是需要#include<stdlib.h>吗?该程序没有任何头文件为什么能运行?
编译过了之后,连接器是根据函数名称进行连接,和申明关系不大,所以,连接器也能找到正确的函数进行连接。
但你这个程序,应该会生成一些warning,提示部分函数没有申明。追问
会给出什么样的默认声明呢?
追答一般是int fun(),函数调用不检查参数个数,所以,编译是没问题的。
不过,这种用法不建议,因为这种方式,如果函数入参填错了,系统是不会报错的。
很明显不可以运行,这就是证据
参考技术B 这些头文件,在VC软件中,是默认包含的吧,就是头文件,可以在函数中包含,也可以在软件中把一个文件夹下的所有头文件都包含进来... 参考技术C VC并不是标准C,他编译的时候可能默认包括以上头文件。java中 调用native方法,生成头文件时,为啥不正确?
其中bin文件夹是生成的class文件夹,还有一个src是源文件夹
myeclipse生成的异常是第三个图。
类是一个非抽象类,但是你里面却有一个抽象方法,此为错误二,所以编译不通过。。追问
这是native方法,你看见displayHellowWorld有native修饰了吗,利用这个方法可以从java程序中跑到C程序中执行。具体你可以百度一下。。。还是很感谢你的回答。。。
追答- - 还真的没用过native,因为我都是用java开发网站的而已
参考技术A 亲爱的小同志 你写的类名是HelloWorld 但是你在调用的时候是 包名.HellowWorld看出来了吗??HelloWorld 和HellowWorld是不是不一样?多了个小写的 w
以后记得细心哦~~本回答被提问者采纳 参考技术B 那你类文件nativefangfa.HelloWorld拷贝到当前目录下没追问
手贱了。。。命令行中少写个w。。
以上是关于c语言程序缺少头文件为啥还可以运行,并得到正确结果?的主要内容,如果未能解决你的问题,请参考以下文章
编写C程序时有时候不加头文件也能运行,这是为啥?是否有些头文件必须得加,而有些不用呢?
新手请教:我自创建了c语言头文件,可是为啥运行时自己的头文件不能包含进去。请高手为我解答。谢了!