里面是VC 命令,有什么看不懂的?或者说谁叫你要看懂的?你用C#去理解它当然不行了。
unsafe包装的是非安全代码,一般象上面那样涉及指针的内容

解决方案 »

  1.   

    1.我想应该是申请堆栈空间吧
    2.*p++ = *p++ = 1; //这是什么意思
      后面的*p++ = 1;讲指针的第1个数置为1,然后指针向前推一位..*p++自然就是第二个位置了.
    3.
      *p = p[-1] + p[-2]; 
      指针当前位置的值为前面二个之和.
      为什么循环是从2开始就是这个道理.
    4.我是根据结果推出的答案.不真确的的地方望指正
      C#中不推荐使用指针.我还是头一次看到这样的代码.
    hope it helps
      

  2.   

    抱歉,过去我用VC 老是想到了VC,其实非安全代码里面允许使用C或C++ 原型的指针,而不是单指VC。。 :(
      

  3.   

    》2.*p++ = *p++ = 1; //这是什么意思
    》后面的*p++ = 1;讲指针的第1个数置为1,然后指针向前推一位..*p++自然就是第二个位置了.那么说太复杂了,你可以理解为:p++ = p++ =1而这个P是指 new int[100] 的栈 的位置也就是p[2] = p[1] =1就是p[2] = 1; p[1]=1;
      

  4.   

    tjq_tang(重新开始):我也是推断的.但是下面这句话还是不明白什么意思.*p = p[-1] + p[-2]; 能详细说说吗?
      

  5.   

    晕。。又写错了p++ = p++ =1应该是p[1] = p[2] =1
      

  6.   

    *p 就是当前的指针位置,也就是第三个栈位(因为前面经过二次++)= p[-1] + p[-2]; 因为 p 的当前栈位 -1 的值是 1,p 的当前栈位 -2 的值也是 1所以*p = p[-1] + p[-2]; 就是*p = 1+1;
      

  7.   

    >> int* fib = stackalloc int[100]; //什么意思
    stackalloc 函数就是在堆栈上分配内存块。这个不难理解吧.>>2.*p++ = *p++ = 1; //这是什么意思
    大家都说了.>>*p = p[-1] + p[-2]; P[E] 操作与 *(P + E)是等效的.实际上就是
    *p = *( p - 1 ) + *( p -2 )估计现在应该明白了吧.
      

  8.   

    *p++ = *p++ = 1这个我给你再解释一遍:
    *p 初始指向fib
    *p++ = *p++ = 1 先执行右边的*p++=1,先是*p=1 就是fib[0]=1;然后*p++,指向下一个fib[1]
    *p++ = *p++ 先是*p=fib[1]=1,然后*p++,指向fib[2]所以在*p = p[-1] + p[-2];这个语句中,这个*p就是指fib[2]