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

发布于 2024-11-05 04:15:02 字数 250 浏览 5 评论 0原文

假设我已经知道了:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终止放荡 2024-11-12 04:15:02

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

Yes you are. Although the value of p is NULL, it still has a valid address, so you may pass its reference.

各空 2024-11-12 04:15:02

是的,您在这两种情况下都是正确的。

Yes, you are correct in both cases.

朱染 2024-11-12 04:15:02

在这两种情况下你都是正确的。只是添加一个简单的说明。虽然你分配了

char **pp = &p;

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

You are correct in both cases. Just to add a simple clarification. Though you assign

char **pp = &p;

You still cant access **pp, because it is still has NULL. But you can safely access *pp.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文