对于LinuxC来说吧,市面上常见的有很多,例如:Ubuntu,Centos,Redhat,Debian。我经常用的就是Ubuntu。对于Linux来说,linux之下都是文件,首先跟windows我们做一个区别,windows目录犹如一片森林,而在linux操作系统之下犹如一颗倒置的树。在linux操作系统中,所有的东西都在(/)根目录之下,根目录的名称就是(/),在其中我们应该注意的就是,HOME是家目录,而home不是家目录。
在linux操作系统中,我们对于数据存储和变量在内存中开辟空间有如下的规定。在4G~3G中一般就是我们的内核空间,在0~3G中间是我们的数据段,首先是堆区,栈区,堆区是由我们程序员开辟(molloc)与释放(free),栈区中存放的数据时由系统自动开辟与释放的,然后是(.bss)区,.bss是未初始化过的全局变量和静态变量。(.data段)是我们初始化过的全局变量与静态变量。再然后就是我们的常量区与代码段。
对于全局变量来说,对于变量存储类型有:auto,extern,static,register,auto修饰的变量存储在我们的栈区中,只能修饰局部变量。extern修饰的变量存储在静态区(.bss和.data统称为静态区),智能修饰全局变量。static修饰的变量存储在静态区,局部变量和全局变量都可以修饰。register修饰的变量存储在寄存器中,只能修饰局部变量。
对于我们变量的生命周期和作用域来说,局部变量的生命周期就是从定义开始,到我们的模块也就是大括号结束,作用域就是在大括号内。static修饰的局部变量,生命周期是从我们定义开始到程序程序结束,作用域也是在大括号内。全局变量的生命周期是从定义开始到程序结束,作用域是我们整个程序。static修饰的全局变量是从定义开始到程序结束,作用域是在本文件内。
对于数据类型的转换来说,除了我们进行的强制类型转换以外,我们的操作系统中还会进行一种隐式类型转换。
横向箭头:不管我们有没有进行混合运算,都势必进行转换