Lv.v

导航

2012年5月29日 #

数组和指针的暧昧

摘要: 数组名不是对象,数组才是对象,指针也是一种对象,因此,数组名并没有内存空间,它是一个右值。想看具体的代码么?把下面的代码汇编一下,就可以看见其区别了:char a[10]; char *p; p=a; a[2]=10; p[2]=20; 编译器编译后的汇编代码是这样的: _main proc near push bp mov bp,sp sub sp,10 push si lea si,word ptr [bp-10] ;这个就是p=a,p被保存在某个地方,这里p被优化为保存在寄存器 mov byte ptr [bp-8],10 ;这个是a[2]=10,a是直接堆栈操作,因为它是一个地址,没有 阅读全文

posted @ 2012-05-29 08:57 Lv.v 阅读(256) 评论(0) 推荐(1) 编辑