以下是引用雨中秣燕在2007-10-20 12:47:23的发言:
int main(void)
{
int a[10]={0};
int b=(int)a;
5[(int*)b] = 128;
printf("%d %d %d\n", a[4], a[5], a[6]);
getchar();
return 0;
}
这个机器没编译器,结果是0,128,0么? int main(void)
{
int a[10]={0};
int b=(int)a;
5[(int*)b] = 128;
printf("%d %d %d\n", a[4], a[5], a[6]);
getchar();
return 0;
}
----------------解决方案--------------------------------------------------------
我运行的结果和楼上的一样,不知道为什么
5[(int *)b]=128是什么意思,有这样赋值的吗
[此贴子已经被作者于2007-10-20 16:52:55编辑过]
----------------解决方案--------------------------------------------------------
5[(int *)b]=128;???奇怪了,同问??
----------------解决方案--------------------------------------------------------
哪位明白的给我们讲讲,不胜感激
----------------解决方案--------------------------------------------------------
int a[10]={0};
int b=(int)a;//b的值是个地址(但其实上还是个数字)
5[(int*)b] = 128;//再把地址转换成指针.
以前的数组定义形式 有两种的.呵呵.
----------------解决方案--------------------------------------------------------
斑竹说的这两点我们都了解,问题在于
怎么把128赋给b[5]的,也就是a[5]。
其实拐弯抹角的就是int *b=a;
关键是怎么赋值的??
----------------解决方案--------------------------------------------------------
5[b]==b[5]不是吗
----------------解决方案--------------------------------------------------------
这个我还真不知道,,,想起来了。。。对阿。以前没有注意这个问题。谢谢了
5[b]=*(5+b);
b[5]=*(b+5);
以前还真没有注意呢,谢谢了
----------------解决方案--------------------------------------------------------