对于值类型 int i = 0 ;i = i + 1 以前的地址和修改后的地址是是相同的吗 那对于字符串 string s = "a"; s = s + "b"  s的地址和以前一样吗

解决方案 »

  1.   

    能简单解释下吗 Thank you
      

  2.   

    string 对象是只读的。
    至于 int 运算,你下个断点,然后看反汇编代码就行了。大致是
    mov eax, ptr[ebx + 一个偏移]
    inc eax
    mov ptr[ebx + 一个偏移], eaxptr[ebx + 一个偏移]就是 i 的地址。
      

  3.   


    值类型是直接保存的值,因此是一样的
    string类型是保存的地址,当将一个地址和另外一个string合并的时候,会先分配一个新的地址,将原来的值和新值合并为一个string,放到新地址,同时变量指针指向新地址。
      

  4.   

    变量的地址不会因为赋值而改变。
    int与string的不同之处是一个保存值,一个保存指针。对于string赋值,改变的仅仅是这个地址上的指针值。