Hello之C&Java&Python

@

前言,原来是java程序员,最近学习了一段时间发现,java只关注业务逻辑的开发,封装了很多的东西,导致底层的许多东西不是太了解,突然某一天,灵光凸现,既然语言都是相通的,我是不是可以利用java的知识来类比学习其他的语言呢。

哈哈,学习语言第一步,是不是从HelloWorld开始学习。开始我们的学习之旅吧。

C之HelloWorld

#include<stdio.h>
int main(){
	printf("hello world \n");
	return 0;
}

Java之HelloWorld

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Python之HelloWorld

#!/usr/bin/python3
print("Hello world")

三者代码分析:

  • 通过观察三段代码的代码头部只有C语言引入了#include<stdio.h>这个函数库,那么这个函数的作用是什么的呢,不要它会报错嘛,经过尝试以后发现,删除这段代码后测试发现,程序可以正常执行但是会出现一个警告:

    也就是说,这句话是想来让我们的C语言文件来包含一个东西,那这个东西自然就是我们后面跟上的<stdio.h> ,而stdio.h分明就是以stdio为名,类型是h的文件啊。这里,我们将再引入一个概念:头文件。而这个stdio.h正是这个头文件。

头文件概念解释:用中文来说,就是我们的编译器在尝试翻译我们的代码时,找不到printf是什么意思,他翻译不出来。
虽然说这个程序也是可以运行的,为什么呢,因为现在的编译器比较智能,它可以自动的在编译的时候帮你添加缺失的基本头文件,所以,你这样编译完之后的程序也能输出Hello World的。
那么为什么加了头文件编译器就能翻译成功了呢。秘密,就在于头文件可以告诉编译器printf是什么,他能告诉编译器他能做什么,简单的,我们就可以把他理解为它是一张清单,里面列出了一些函数,可以教会编译器去怎么来翻译我们的C语言文件。
这就是头文件的作用。
那么,我们再回到那句#include <stdio.h>吧。
现在,我们已经知道了,这句话的作用是教会编译器输出文字,而stdio.h相当于一本教科书,编译器能够看懂它。
我们再来谈谈为什么要在include之前加一个#吧。
其实,这个#可以帮助编译器区分预处理器指令和普通的代码,其实也就是说,以#开头的代码叫做预处理器指令,是一种特殊的代码,为什么说它特殊呢?因为编译器首先看的就是以#开头的代码,然后再看我们的主体代码的,他有着“优先权”。
再来,就是这本“教科书”的名字了——stdio.h,.h很好理解,一个文件的后缀,header的缩写,代表的他是一个头文件。而stdio呢,我们再次开始我们的单词查询法(顺便提一下,计算机对英文要求很高,尤其是单词简写,要有一定的敏感性):首先std是standard的简写,是标准的意思,而io则是两个单词的缩写,分别是input和output,分别代表输入输出,所以stdio便是标准输入输出的意思,它里面定义了一些输入和输出的函数,比如我们的printf函数便是其中的标准输出函数之一。
那么,为什么是用<>而不是用""把stdio.h括起来呢,这里也是有区别的。在操作系统(一般指(类)Unix系统)内部,有着固定的地方存放头文件,而<>就是让C语言编译器去那个固定的地方读取头文件,而不是别的地方。
所以#include <stdio.h>就是让C语言编译器去那个特定的地方读取我们的标准输入输出头文件。
那么至于#include "文件名"呢,他则是从我们存.c的源代码文件的同一目录读取头文件(因为我们自己也可以写头文件,本文暂时不介绍),并不是从特定的目录读取。
摘抄自-----https://www.jianshu.com/p/db5e0709eb32

  • java和Python没有C语言中的头文件,为啥可以执行成功,而且没有警告或者报错的信息呢?
    在Java中,我们使用类似的关键字import来添加包并使用其中的方法。但是在高级语言中,默认情况下导入的包很少。 例如,在Java和Python中,java.lang.*语言默认情况下导入。所以我们发现即使我们不需要导入文件,我们的print也可以正常的使用,通过java源码查看,println虽然属于:package java.io;,但是System这个类中是有java.io.*文件的,所以不需要导入java.io也可以正常使用。
    对于Python来说,print()函数是内置的一个函数,不需要引入可以直接使用,这是比c语言方便一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值