问题一:变量初始化,具体到电脑内部动作方面,是不是可以这样理解,变量的初始化完成以下操作: 1、给变量分配内存。 2、建立内存和变量名的对应列表。 3、给变量对应的内存单元赋默认的初始值,如整型变量,赋初始值为0 不知道以上分析对不对。 问题二:变量初始化时,还经常有一个“有效值”的说法,什么是有效值。内存有没有赋值,只要加电后,肯定一个状态,也就是有值,这个值和有效值有什么区别呢,系统是如何判断这个值是不是有效值的。问题三:
dim num 
num = null  '    ? 问题1: NULL  的值是什么, 问题2:= null 的作用是什么 
num = empty  ’  ?问题1: empty 的值是什么, 问题2:= empty 的作用是什么 问题四:判断一个变量有没有初始化的依据是什么,比如他的内存分配了没有?能说的具体点吗。

解决方案 »

  1.   

    你问的是C++的问题么问题三: 
    dim num 
    num = null  '    ? 问题1: NULL  的值是什么, 问题2:= null 的作用是什么 
    num = empty  ’  ?问题1: empty 的值是什么, 问题2:= empty 的作用是什么 dim是什么?C++没有这个关键字!
    null和empty是什么,你问我,我反而得问你……问题四:判断一个变量有没有初始化的依据是什么,比如他的内存分配了没有?能说的具体点吗。C++中,任何变量都是分配了地址的,哪怕是指针变量,还得有个地址来存放地址吧。因此,C++里内存有没有初始化是未知的,无法判断,因此好的习惯是声明内置类型就立刻初始化。问题二:变量初始化时,还经常有一个“有效值”的说法,什么是有效值。内存有没有赋值,只要加电后,肯定一个状态,也就是有值,这个值和有效值有什么区别呢,系统是如何判断这个值是不是有效值的。我从没有听过“有效值”这个说法,内存加电后即使有个初始值,这个值在使用过程中也会改变。
      

  2.   

    问题一:变量初始化,具体到电脑内部动作方面,是不是可以这样理解,变量的初始化完成以下操作: 1、给变量分配内存。 2、建立内存和变量名的对应列表。 
    =================
    完全性错误,编译好之后,各个地方调用这个变量名的都变成了地址。那还来的变量名,更哪来的什么“对应列表”
    3、给变量对应的内存单元赋默认的初始值,如整型变量,赋初始值为0 
    ===============
    不是Static,你不自己初始化,它会自动赋初值0?不知道以上分析对不对。 问题二:变量初始化时,还经常有一个“有效值”的说法,什么是有效值。内存有没有赋值,只要加电后,肯定一个状态,也就是有值,这个值和有效值有什么区别呢,系统是如何判断这个值是不是有效值的。 
    ======================
    不知所云问题三: 
    dim num 
    num = null  '    ? 问题1: NULL  的值是什么, 问题2:= null 的作用是什么 
    num = empty  ’  ?问题1: empty 的值是什么, 问题2:= empty 的作用是什么 
    ==========================
    这是什么鸟语?Basic不像Basic,C++不像C++。LZ来自火星?问题四:判断一个变量有没有初始化的依据是什么,比如他的内存分配了没有?能说的具体点吗。
    ========================
    初始化么,看它有没有分配内存咯,内存里有没有值咯
      

  3.   

    问题三:
    dim num
    num = null  '    ? 问题1: NULL  的值是什么, 问题2:= null 的作用是什么
    num = empty  ’  ?问题1: empty 的值是什么, 问题2:= empty 的作用是什么 num=null --> 变量有值,null是一个特定类型的有效值,对应VARIANT中的VT_NULL
    num=empty(应该Nothing吧) --> 变量存在,但是没有值(没有值也是一种类型),对应VARIANT中的VT_EMPTY解释型语言中的变量全部都是有有效值的变量,因为解释器会自动执行变量初始化。
    编译型语言中的变量也全部都有值,但是如果你自己不初始化的话,它的值是随机的。
      

  4.   

    问题一:变量初始化,具体到电脑内部动作方面,是不是可以这样理解,变量的初始化完成以下操作: 1、给变量分配内存。 2、建立内存和变量名的对应列表。 3、给变量对应的内存单元赋默认的初始值,如整型变量,赋初始值为0 不知道以上分析对不对。 
    ==================================
    不知道你说的是什么语言,就C语言这种编译型的语言来说,上面是错的,变量在编译之后,执行时全是地址,并不存在什么内存与变量名的对应列表。
    初始化一般是程序员自己实现的,对于默认的情况也是在编译时生成汇编代码时生成相应代码的。
    问题二:变量初始化时,还经常有一个“有效值”的说法,什么是有效值。内存有没有赋值,只要加电后,肯定一个状态,也就是有值,这个值和有效值有什么区别呢,系统是如何判断这个值是不是有效值的。 
    ============================
    这个确实是不知所云了,哪有什么有效值的说法啊,内存在任何时候都是有值的,至于这个值对程序来说,在逻辑上是有用的还是没有用的,是程序员自己的事,系统管不了,也无法判断,这个是程序员的事,所以写代码不严谨的人总会出现变量未初始化而出现错误的现象。问题三: 
    dim num 
    num = null  '    ? 问题1: NULL  的值是什么, 问题2:= null 的作用是什么 
    num = empty  ’  ?问题1: empty 的值是什么, 问题2:= empty 的作用是什么 
    ==================
    不知道是什么语言,记得vb中有关键字dim,不知道是不是,对vb只会一点点,不好说。不过编译型语言与VB这种解释型的语言区别还是很大的。问题四:判断一个变量有没有初始化的依据是什么,比如他的内存分配了没有?能说的具体点吗。 
    =========================================
    任何一个变量,既然已经在用了,都已经分配内存了,(当然指针所指空间没分配内存与这个讨论无关)难道有变量已经在用了还没有分配内存给它?
    判断一个变量有没有初始化一般是程序员自己观察的,当然有的编译器也有这个功能,不过,那也是编译扫描阶段从词法上分析的。系统本身可没有这个能力。总之一句话,不知道楼主在说什么!
      

  5.   

    请问JAMESHOOO,什么是有效值 。
      

  6.   

    VB,VB的坛子里没有令人信服的答案,所以转到这儿来了。
      

  7.   

    你希望什么才算有效值?
    一个变量只要占用了内存,就一定有值。
    在VB等解释性语言中,所有变量自动初始化,如果一个变量没有进行赋值,那么它的值就是Nothing(Empty)。在解释器看来,这种变量是“无值的”,但从内存的角度看,它是“有值的”。
    有效值取决于你自己的需要,你可能用 if a <> Nothing 来判断它是有效值,也可能用 if a <> Nothing And a <> Null 作为有效值,甚至也可以把 a = Nothing 也作为有效值。反正变量在那儿,怎么用完全看你自己。
      

  8.   

    没有什么有效值不有效值,你用windgb挂下,随便查个地址!address 0x12345678啥的,会显示这块内存的属性,是可读还是noaccess,你所谓的有效我想只是你有无权利去使用它而已,问题没有必要抠字眼,搞的那么哲学,呵呵。知道是个什么玩意就得了
      

  9.   

    楼主学的VB,而VB是一种高级语言。好多东西VB给“黑盒子”了。而楼主又是一个由探索精神的人,想弄明白低层的事情,所以就到C语言这来了。
      

  10.   

    不同的语言处理是不同的,c不会给你自动赋初值,vb我记得好像会。
      

  11.   

    问题1 
       变量,实际上计算机并不知道你用的是变量还是什么其他东西,在计算机对内存操作的过程中,只有一个相关的东西,就是地址.而变量只是方便开发者理解及使用的一个代名词.
       一个变量可以在堆上,也可以在栈上,也可以是任意一段程序的合法地址,默认情况下是不存在初始化的。变量是被分配到一个可用的地址上,根据不同的情况这个地址可能曾经被使用过,那么就可能存在原始的数据。二者数据是没任何意义的。
        但是你的问题在vb里面就有所不同,因为vb是伪编译,属于脚本解析型的。所以变量需要一个对应信息。并且包含变量的类型,否则变量就是Empty
    问题2
       内存从开机就加电了,而内存中无非就是0 1,不存在有没有值得说法。你不能说0是没有值。
       有效值是针对你的程序而定的,比如说一个字节,你当作bool 来用。那么你赋予的0,1就是有效值,其他的就不是有效值。 如果你当作byte来用,那么0-255都是有效值。 可,如果你并没有初始化,它指向的地址恰好里面有数据,那么该数据就是无效值,因为他不是由你的编程设定之内而产生的数值
    问题3
       Null   
      一个值,表示一个变量不包含任何有效数据。Null由以下操作之一产生:     
      将Null显式赋给某变量。     
      对包含Null的表达式进行的任何操作。 一般跟数据库有关系。 比如int的null就是0 str的null就是"" 
      Empty     
      一个值,表示没有为变量指定初值。Empty变量在数值上下文中为0,在字符串上下文中为零长度字符串。比如说 Dim A; 这样就没有指定他是什么变量
       而C中 没有empty。null就表示0 
    问题4
       变量只要可以使用,它的内存就是被分配了的。但是要区分开指针型变量,他分配的地址只有4字节(32位系统)。