C 指针及其使用:*&;宝洁公司*P它们合法吗?
嗨,我是C编程新手。我试着弄明白*&p和&*p指针是什么意思?它有帮助吗C 指针及其使用:*&;宝洁公司*P它们合法吗?,c,C,嗨,我是C编程新手。我试着弄明白*&p和&*p指针是什么意思?它有帮助吗 q=*&p 它们不是操作,只是会产生编译时错误。因此,它们可以在宏中用作断言*&l确保l是左值,&*p确保p是(隐式转换为)指针 #define ASSERT_LVALUE(l) (void)(*&(l)) #define ASSERT_POINTER(p) (void)(&*(p)) int main(void) { int* p; int i; ASSERT_LV
q=*&p
它们不是操作,只是会产生编译时错误。因此,它们可以在宏中用作断言
*&l
确保l
是左值,&*p
确保p
是(隐式转换为)指针
#define ASSERT_LVALUE(l) (void)(*&(l))
#define ASSERT_POINTER(p) (void)(&*(p))
int main(void) {
int* p;
int i;
ASSERT_LVALUE(i);
ASSERT_LVALUE(3); /* error: lvalue required as unary ‘&’ operand */
ASSERT_POINTER(p);
ASSERT_POINTER(i); /* error: invalid type argument of unary ‘*’ (have ‘int’) */
ASSERT_POINTER(3); /* error: invalid type argument of unary ‘*’ (have ‘int’) */
return 0;
}
它曾经帮助过你吗?我从未使用过它。
&*p
适用于阵列。所以它实际上测试p
是否可以隐式转换为指针