用c语言来表述: unsigned int A[3] at 0x1000 = {0,1,2}; unsigned int a at 0x2000 = 0;
若: unsigned int *p; p = A; p = &A[0]; p = A[0];肯定错 因为左值是指针变量p,应该是指针即地址 而右值是数组第1个单元A[0]的数值而非地址本身! 但是我的A[0]内就是我需要的地址呢???当然是要做强制转换了 即: p = (unsigned int *)A[0];
但是一般变量很容易误导. p = &a;//正确 p = a;//我晕!!!a的地址&a是0x2000,而0x2000的内容a是0.
以下都能通过吗???
p = (unsigned int *)0x2000;//知道a的地址
if (p == &a) { puts("这个俺明白"); } if (p == a) { puts("这个是做梦吧,除非编译器认为左值是指针右值肯定为指针即a的地址"); } else { puts("俺坚持p != a的说明"); }
文章评论(0条评论)
登录后参与讨论