C代码:
#include <stdio.h>
int main()
{
char a[]="abc";
char b[]="abc";
char *c="abc";
char *d="abc";
const char e[]="abc";
const char f[]="abc";
const char *g="abc";
const char *h="abc";
printf("%i\n", a==b);
printf("%i\n", c==d);
printf("%i\n", e==f);
printf("%i\n", g==h);
}
输出结果为:0 1 0 1
汇编代码:
注:local.n 代表局部变量
mov eax,dword ptr ds:[0x422020] ; 0x422020处的内容为 61 62 63 00 即"abc",NULL
mov [local.1],eax ; 将数据从数据区复制到栈区,即a[]="abc"
mov ecx,dword ptr ds:[0x422020] ; 同上
mov [local.2],ecx ; b[]="abc"
mo