这些C指针操作会导致问题吗?

时间:2011-05-04 10:59:42

标签: c pointers theory dereference lvalue

让我说我得到了:

char *p = NULL;

我确信这个会出现问题,因为我要取消引用NULL指针:

*p = 16;

另一方面,我认为这个可以,因为我得到* p的地址而不是NULL本身:

char **pp = &p;

我在两种情况下都是对的吗?

3 个答案:

答案 0 :(得分:5)

是的,你是。尽管p的值为NULL,但它仍然具有有效地址,因此您可以传递其引用。

答案 1 :(得分:4)

是的,在这两种情况下你都是对的。

答案 2 :(得分:1)

在这两种情况下你都是对的。只是添加一个简单的说明。虽然你指定了

char **pp = &p;

你仍然无法访问** pp,因为它仍然是NULL。但你可以安全地访问* pp。