&arr创建一个指向数组的指针 - 它是类型的int (*)[3],并指向数组arr.
*&arr取消引用指针 - 它就是数组本身.现在,现在发生的事情取决于你用它做什么.如果您使用的*&arr是无论是主题sizeof还是&运营商,然后分别给出了数组的大小或地址:
printf("%zu\n", sizeof *&arr); /* Prints 3 * sizeof(int) */
Run Code Online (Sandbox Code Playgroud)
但是,如果您在任何其他上下文中使用它,那么它将被计算为指向其第一个元素的指针:
int *x = *&arr;
printf("%d\n", *x); /* Prints 1 */
Run Code Online (Sandbox Code Playgroud)
换句话说:*&arr行为完全像arr你期望的那样.