什么是动态数据类型
来源:互联网 发布:淘宝动漫 编辑:程序博客网 时间:2024/06/05 22:58
动态数据类型
Python是动态数据类型,变量不需要指定类型。
Python的变量,可变的是指向,不可通过变量名修改其指向数据单元的内容。
//函数id() 的作用是查看变量指向的内存地址。见help(id)//内存中分配两个单元,存放数字12和13。//x,y分别指向内存地址,类似C语言的指针x=12y=13print 'x=',x,id(x)print 'y=',y,id(y)//让x指向y的地址x=yprint 'x=',x,id(x)print 'y=',y,id(y)//内存中分配两个单元,存放数字15和16。x=15y=16print 'x=',x,id(x)print 'y=',y,id(y)
运行结果:
x= 12166579468y= 13 166579456x= 13 166579456y= 13 166579456x= 15 166579432y= 16 166579420
可以看到变量x和y指向的内存单元在不断的变化。
而某个内存单元中的数据内容是固定不变的,例如内存单元 166579468 始终保存数据12,直到程序结束,释放空间 。
Python变量的类型是根据它所指向的内存单元中的数据类型决定的,因此不需要声明,指向什么类型,就是什么类型。
C语言的静态数据类型
#include <stdio.h>int main(int argc,char * argv[]){int x=12, y=13;//%d输出整数,%p输出指针printf("x=%d,x_addr = %p\n",x,&x);printf("y=%d,y_addr = %p\n",y,&y);x=y;printf("x=%d,x_addr = %p\n",x,&x);printf("y=%d,y_addr = %p\n",y,&y);//把变量x指向的内存单元中的数据缓存15x=15;y=16;printf("x=%d,x_addr = %p\n",x,&x);printf("y=%d,y_addr = %p\n",y,&y);return 0;}
运行程序:
//CentOS安装gcc$sudo yum install gcc//编译.c文件,生成myapp文件$gcc -o myapp dataType.c//运行myapp$./myapp
运行结果:
x=12,x_addr = 0xbfd9014cy=13,y_addr = 0xbfd90148x=13,x_addr = 0xbfd9014cy=13,y_addr = 0xbfd90148x=15,x_addr = 0xbfd9014cy=16,y_addr = 0xbfd90148
和Python的情况相反,变量x,y的指向不变,例如变量x一直指向0xbfd9014c 内存单元。
而变化的一直是变量指向的内存中的数据内容。
C语言声明一个int类型的变量,即分配一块内存空间给这个变量。
这个内存单元始终属于这个变量,且只能存放int类型的数据,直到释放内存。
静态类型语言声明变量时必须指明数据类型,因为要为每个变量提前分配好固定大小的内存空间
总结:
动态语言(又称弱类型语言),变量不用声明类型,具体类型根据指向的内存单元中的数据类型决定。
动态类型,指向可变,内存单元中的数据不可变。
静态语言(又称强类型语言),变量需要声明类型,变量指向的内存单元可存放的数据类型固定。
静态类型,内容可变,变量的指向不可变。
0 0
- 什么是动态数据类型
- 什么是POD数据类型?
- 什么是POD数据类型?
- C语言 - 什么是数据类型?数据类型的本质
- 动态数据类型和静态数据类型
- C#中什么是元数据类型
- 什么是primitive主数据类型呢
- 什么是动态链接?
- 什么是动态语言呢?
- 什么是动态语言?
- 什么是动态语言?
- 什么是动态链接库
- 什么是动态链接库?
- 什么是动态链接库
- 什么是动态密码
- 什么是动态连接库
- 什么是动态链接库
- 什么是动态链接库
- 基础算法之插入排序
- Java常用类库——国际化程序(Locale,ResourceBundle以及MessageFormat处理动态文本)
- IOS中单例怎么销毁,会造成内存泄露吗?
- 内存对齐,malloc内存对齐
- 在Eclipse中安装Zookeeper状态查看插件
- 什么是动态数据类型
- viewpager的简单实现
- Qt学习十一:Qt+VS练习一:Qt的UI布局和在VS中的配合
- ViewPage+Fragment 懒加载+只加载一次 SwipeRefreshLayout自动刷新
- 设计模式总览
- 使用BitmapShader实现简单绘图
- React Native 开发到上线记录(二)
- 一个清空/var/log/messages的脚本
- docker学习之(一):docker相关资料-- debian docker安装教程-常用资料导航