为什么 c 语言的全局变量不能多次定义而 python 可以?

c语言变量如果不初始化,可以编译成功,但是执行的时候,很可能报错,操作系统是如何管理内存的?每当一个应用程序打开时,操作系统为其分配内存,内存有内存地址与内存单元,当应用程序初始化运行时,就会往内存单元里面写数据,当操作系统回收的时候,并不清空内存单元,所以存在大量的垃圾数据。如果变量不初始化,就会默认读取垃圾数据,有些垃圾数据会导致程序崩溃。VC++2010的编译器可以感知变量没有初始化,调试的时候就会出错。所以,变量使用之前,必须初始化。
在C语言中,当编译器为变量分配一个空间时,当变量改变值时,改变的是这块空间中保存的值,在程序运行中,变量的地址就不能再发生改变了。
Python不同,python是弱变量类型语言,没有变量的声明,它的变量与C语言中的指针相似,当变量赋值时,编译器为数值开辟一块空间,而变量则指向这块空间,当变量改变值时,改变的并不是这块空间中保存的值,而是改变了变量指向的空间,使变量指向另一空间。
参考:
https://blog.csdn.net/chunqiu_lfq/article/details/20775437

你可能感兴趣的:(Python)