1、代码
(1)机器码:由二进制组成,是给计算机看的,计算机可以直接执行。
(2)汇编码:由数字、字母和符号组成的代码。
汇编语言书写的代码必须按照计算机的计算流程
(写代码的流程就是模拟计算机运行的过程)
make space a in 3
make space b in 4
make space c in a add b
c=a+b
(3)高级编程语言源码:由数字、字母和符号组成的代码。
(可以按照人类的思维习惯去书写)
源代码转变为机器码:编译
int a=3;
int b=4;
int c=a+b;
2、常量:不变的量
(1)直接在程序中出现的数据(字面量)
print(3) #3为常量
print("Hello World") #Hello World 为常量
(2)将一个变量通过一些手段变成常量
限制变量的值不可修改。
特殊的:python中不存在第二种
const int a=3;
define PI 3.14
3、变量:变化的量
变量的本质就是进程空间中的一个临时的存储空间。
并且该临时存储空间有其自己的一个物理内存地址(计算机随机分配)
因为变量的地址数随机的,我们不应该直接通过过该变量的地址去操作数据。
怎么办?我们可以给变量起个别名(变量名)
系统底层会自动为变量名称和其针对的变量地址做一个表格。
(C语言中,变量的地址被称为指针)
那,该空间中存什么?无论哪种语言,变量空间中永远不可能存数据本身,
存的是数据的地址。
常量池中:存常量数据的地址
堆内存中:存对象数据地址
进程中:存变量的地址
C:里面只有常量在常量池中的地址和变量地址
java:里面只有常量池中的地址和堆中的地址
python:里面只有堆中的地址(对象)
python中一切数据皆对象。
4、高级编辑语言之间的区别:
(1) 静态编译型:C/C++/Java (除C及C++外的编程语言都无指针概念,变量的地址不可访问,只能访问数据的地址)
编译:先将源代码整体编译完成,生成一个可执行程序,然后生成一个可执行程序即可
如:英语书---翻译为-----中文书
C: .c----编译----.exe
java: .java---编译----.class
静态:变量数据类型一旦确定则不可更改。
(2)动态解释型:Python/JavaScript/Matlab
解释:逐行进行编译且运行
如:同声传译(说一句翻译一句)
动态:变量数据类型随着数据的变化而变化。
5、id()函数: 查看当前数据的地址
a=3
print(id(a)) #查看a所存储的数据在堆内存中的地址
print(id(3)) #查看3这个数据在堆内的地址
print(type(a)) #int
a=3.14
print(id(a)) #查看a所存储的数据在堆内存中的地址
print(id(3)) #查看3这个数据在堆内的地址
print(type(a)) #float
a=""
print(id(a))
print(id(""))
print(type(a))
#单行注释
"""
多行注释
"""
6.bug的由来
重点:
变量本身是内存当中的一个临时存储空间,该空间中存的数据地址(数据都在堆)
变量的数据类型随着所存储的数据变化而变化。