大家好,今天小编关注到一个有意思的话题,就是关于c语言和java数据类型区别的问题,于是小编就整理了1个相关介绍c语言和Java数据类型区别的解答,让我们一起看看吧。
C语言中,为什么要设置数据类型?
因为c语言是静态语言,c之上的cpp,csharp,JAVA也是静态语言,而j***ascript是动态语言,无需提前确定类型,因为编译器需要知道你所声明的类型,好开辟内存供你的数据使用,这样可以减少运行时间消耗,大概就如此,具体的还是请大神来解答吧
这个问题涉及到内存分配的原理,有点晦涩难懂。客官请泡好茶听我慢慢道来。
跟执行程序有关的计算机部件主要是CPU,寄存器和内存。CPU是负责执行程序指令的核心部件,在内置时钟的驱动下,它从寄存器中取得指令和数据运算后把结果写回寄存器。这些指令是什么样子的呢?这些指令都是一些操作码,有管逻辑运算的,有管输入输出的,特别是有管向内存的堆和栈里读写数据的。之后会讲到堆和栈和变量的关系,所以请记住这两个字。内存中存放着程序指令和数据,这些东东通过寄存器传输给CPU同时把运算结果保存下来。
内存结构概述
我们所写的c语言代码,经编译连接之后被翻译成了一连串的操作指令。在执行的时候,这些指令被读入内存。程序在内存中是这样存放的,代码段/数据区/堆/栈。其中,
变量类型和内存分配的关系
终于说到正题了。变量类型既有逻辑上的意义,也有物理上的用途。在逻辑上,字符和数字是不同的概念,有必要做区分,在物理上,变量类型反映了所需内存区域的大小,系统可根据变量类型在数据区和堆栈区分配相应的内存。各种语言在处理内存分配上都是大同小异的。因为内存分配是由操作系统决定的。不过C语言中需要用显式处理内存,比如,一个指针变量会被放在栈里,而对它做初期化后,这个变量中就存放了一个堆里的内存地址,如果不释放指针,这段内存将一直被占用。J***a的内存结构也是类似的,它把类放在栈里,由类申请堆里的内存,但它使用了GC自动清理内存,隐藏或者叫封装了内存申请和释放的指令。一些脚本语言也通过不同的方式把内存申请和释放的过程加以封装。使得变量类型单纯地反映了其逻辑上的含义。