问题标签 [null-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
32379 浏览

c++ - 什么是空指针,什么是空指针?

所以我正在处理一些面试问题,我遇到了一个关于 void 和 null pointers的问题,它声称:

没有返回类型的指针称为空指针。它可以是任何类型的数据类型。

这让我彻底困惑!根据这个问题,似乎 void 和 null 可以互换使用,我不认为这是正确的。我假设 void 是一个返回类型,而 null 是一个值。但我只是一个代码新手,我不确定我是对的。

请就什么是空指针和空指针表达您的看法。我不是在寻找无效和无效之间的区别。

0 投票
5 回答
1451 浏览

c - C 中明显的 NULL 指针取消引用实际上是指针算术吗?

我有这段代码。它似乎在这里取消引用空指针,但随后将结果与unsigned int. 我真的不明白整个部分。它的目的是什么?这是指针算术的一种形式吗?

我得到的输出是 44。但它是如何工作的?

0 投票
4 回答
27568 浏览

c - 执行 memcpy(0,0,0) 是否保证安全?

我对C标准不是很精通,所以请多多包涵。

我想知道它是否按标准保证memcpy(0,0,0)是安全的。

我能找到的唯一限制是,如果内存区域重叠,那么行为是未定义的......

但是我们可以认为内存区域在这里重叠吗?

0 投票
8 回答
50735 浏览

c++ - 代码中未初始化的指针

我正在学习 C++,我开始知道如果未初始化的指针可能指向内存中的随机位置,并产生内存可能被其他程序使用的问题。

现在,如果是这种情况,我们不应该在代码的任何部分中包含这一行:

相反,我们应该有类似的东西

请提出建议,因为我在很多书中都看到了第一行(int* ptr;),所以我有这个疑问。如果可能的话,也举一些例子。

0 投票
2 回答
1842 浏览

c++ - C ++在范围结束后丢失指针引用

我遇到了一个非常奇怪的错误,在我离开for范围后,即使在类头中声明了包含对象的数组,我也无法访问循环期间指针指向的任何内容。

这是代码的基础:

Class CTile{ /*Code*/ };

有谁知道可能出了什么问题?

0 投票
2 回答
1121 浏览

c++ - C++链表简单问题

我正在尝试检查给定链表中是否存在实体。这是我的代码:

从我标记为“问题行”的行开始,if 语句的部分

我收到错误 CXX0017(未找到符号“”)和错误 CXX0030(无法评估表达式)。

如果链表中没有实体,则此代码有效 - 换句话说,如果头为空。

Node 构造函数如下所示:

我也试过了:

和节点构造函数

所有组合都返回相同的错误。有什么建议么?

0 投票
3 回答
3413 浏览

c++ - 删除 null void* 指针是未定义的行为吗?

我知道delete空指针是无操作的:

在任一替代方案中,如果 delete 的操作数的值是空指针,则该操作无效。
(C++ 标准5.3.5 [expr.delete] p2

而且删除void*指针是未定义的行为,因为无法调用析构函数,因为没有类型的对象void

在第一种delete object选择如果不是,则行为未定义。
(C++ 标准5.3.5 [expr.delete] p2

现在,通常我认为首先列出的内容会覆盖稍后列出的内容,但是void*下面的空指针呢?

0 投票
8 回答
186068 浏览

c - 我们如何检查指针是否为 NULL 指针?

我一直认为只需简单地if(p != NULL){..}完成这项工作。但是读完之后了这个 Stack Overflow question之后,似乎没有。

那么,在吸收了关于NULL 指针可以具有非零值的问题的所有讨论之后,检查 NULL 指针的规范方法是什么?

0 投票
2 回答
638 浏览

c++ - c++ 函数式编程 ( boost::phoenix && boost::spirit) 测试指针占位符中的空指针

所以,我有以下精神业力规则体:

这导致来自 g++ 的相当长的错误消息(有帮助)以:

这是有效的 C++:

我想尝试boost::phoenix::static_cast_<_r1_type *>(0)转换_r1_type为整数(是的,这是错误的,这只是一个实验)。

问题:

当点为零时,如何使用精神 eps 构造对占位符执行指针测试以防止规则体评估?

与所有“C++ 函数式编程库使用”问题一样,我希望答案让我感觉自己像个傻瓜。

答案

Ildjam 的观点直接回答了我的问题。我的问题有两个问题;上面有个间接问题。这与 PEG 中的条件有关。我想表达的应该这样写:

我使用语义动作主体(在 [] 块中指定)来表达语法的条件部分。奇怪的是,虽然我之前写过条件 PEG 语法,但我只是犯了一个错误,导致了第二类问题。

因此, eps(_r1) 可以解决问题,第二种类型的编译问题与问题无关。

0 投票
3 回答
297 浏览

c++ - 如何防止从 `0` 构造 std::string 引起的麻烦?

编译器(g++ 4.4)显然解释0char* NULL,并s通过调用string::string(const char*, const Allocator &a = Allocator()). 这当然没用,因为NULL指针不是指向 c 字符串的有效指针。当我尝试调用时不会出现这种误解foo(1),这有助于产生编译时错误。

当我不小心调用类似的函数时,是否有可能在编译时出现这样的错误或警告

with bar(0), 忘记 the string, 真正的意思 to have i=0?