这些C指针操作会导致问题吗?
假设我已经知道了:
char *p = NULL;
我确信这个会是一个问题,因为我会取消引用 NULL 指针:
*p = 16;
另一方面,我认为这个对我来说没问题。 d 得到的 *p 的地址本身不是 NULL:
char **pp = &p;
我在这两种情况下都是对的吗?
Let's say I've got that:
char *p = NULL;
I'm sure this one would be a problem as I'd be dereferencing a NULL
pointer:
*p = 16;
On the other hand, I think this one would be OK for I'd be getting the address of *p which is not NULL
itself:
char **pp = &p;
Am I right in both cases?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,你是。尽管p的值为NULL,但它仍然具有有效的地址,因此您可以传递它的引用。
Yes you are. Although the value of p is NULL, it still has a valid address, so you may pass its reference.
是的,您在这两种情况下都是正确的。
Yes, you are correct in both cases.
在这两种情况下你都是正确的。只是添加一个简单的说明。虽然你分配了
你仍然无法访问**pp,因为它仍然有NULL。但您可以安全地访问*pp。
You are correct in both cases. Just to add a simple clarification. Though you assign
You still cant access **pp, because it is still has NULL. But you can safely access *pp.