考虑到这个声明:
int 数组[] = ....;
我知道数组[0]将第一个元素的地址作为其值。
但是关于&大批?我在我的程序中尝试了这个,它还返回了第一个元素的地址。那么有什么区别呢?
尝试“之间的差异'A'
, 65LL
and 65.0
?
所有值都彼此相等(假设为 ASCII),但又不同types以及可能的各种位宽和编码。
现在“之间的区别&array
and &array[0]
"
两者的值彼此相等,因为它们指向内存中的同一位置,但它们的不同之处在于type: 指向一个的指针int
数组与指向 a 的指针int
.
int a[] = {1,2,4};
// &a is a `pointer to array 3 of int`
这种类型差异的一个常见影响是指针数学
printf("%p\n", (void*) (&a[0] + 1)); // next `int` address
printf("%p\n", (void*) (&a + 1)); // one past end of array address
[高级]:虽然这两个指针通常采用相同的编码和大小,但在 C 中,它们could编码和大小也不同,但仍然指向相同的地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)