考虑一下:
int i[50];
void *a = i; //i.e. = &i[0]
void *b = &i;
a == b
永远都是真的,还是有平台/编译器可能并不总是这样?
答案 0 :(得分:5)
是的,标准(平等运营商)第6.5.9段说:
两个指针比较相等,如果......两者 是指向同一个对象的指针 (包括指向对象的指针和 一个子对象的开头)
答案 1 :(得分:1)
是的,投放到void*
的值是相同的......但原始类型不是。
具有
int arr[100];
值arr
,当它衰减到指向其第一个元素的指针时,其类型为*int
;
值&arr
的类型为int (*)[100]
答案 2 :(得分:0)
在这种特殊情况下,是的,报告a和b都是相同的,因为所讨论的数组是1D。仅供参考 - 如果它是2D或更高维数的阵列,这不是真的吗?在这种情况下,请阅读有关数组指针的更多信息。很高兴知道概念,但更好地避免了保持良好的代码可读性。