问题标签 [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.
c++ - 什么是空指针,什么是空指针?
所以我正在处理一些面试问题,我遇到了一个关于 void 和 null pointers的问题,它声称:
没有返回类型的指针称为空指针。它可以是任何类型的数据类型。
这让我彻底困惑!根据这个问题,似乎 void 和 null 可以互换使用,我不认为这是正确的。我假设 void 是一个返回类型,而 null 是一个值。但我只是一个代码新手,我不确定我是对的。
请就什么是空指针和空指针表达您的看法。我不是在寻找无效和无效之间的区别。
c - C 中明显的 NULL 指针取消引用实际上是指针算术吗?
我有这段代码。它似乎在这里取消引用空指针,但随后将结果与unsigned int
. 我真的不明白整个部分。它的目的是什么?这是指针算术的一种形式吗?
我得到的输出是 44。但它是如何工作的?
c - 执行 memcpy(0,0,0) 是否保证安全?
我对C标准不是很精通,所以请多多包涵。
我想知道它是否按标准保证memcpy(0,0,0)
是安全的。
我能找到的唯一限制是,如果内存区域重叠,那么行为是未定义的......
但是我们可以认为内存区域在这里重叠吗?
c++ - 代码中未初始化的指针
我正在学习 C++,我开始知道如果未初始化的指针可能指向内存中的随机位置,并产生内存可能被其他程序使用的问题。
现在,如果是这种情况,我们不应该在代码的任何部分中包含这一行:
相反,我们应该有类似的东西
请提出建议,因为我在很多书中都看到了第一行(int* ptr;
),所以我有这个疑问。如果可能的话,也举一些例子。
c++ - C ++在范围结束后丢失指针引用
我遇到了一个非常奇怪的错误,在我离开for
范围后,即使在类头中声明了包含对象的数组,我也无法访问循环期间指针指向的任何内容。
这是代码的基础:
Class CTile{ /*Code*/ };
有谁知道可能出了什么问题?
c++ - C++链表简单问题
我正在尝试检查给定链表中是否存在实体。这是我的代码:
从我标记为“问题行”的行开始,if 语句的部分
我收到错误 CXX0017(未找到符号“”)和错误 CXX0030(无法评估表达式)。
如果链表中没有实体,则此代码有效 - 换句话说,如果头为空。
Node 构造函数如下所示:
我也试过了:
和节点构造函数
所有组合都返回相同的错误。有什么建议么?
c++ - 删除 null void* 指针是未定义的行为吗?
我知道delete
空指针是无操作的:
在任一替代方案中,如果 delete 的操作数的值是空指针,则该操作无效。
(C++ 标准5.3.5 [expr.delete] p2
)
而且删除void*
指针是未定义的行为,因为无法调用析构函数,因为没有类型的对象void
:
在第一种
delete object
选择(如果不是,则行为未定义。
(C++ 标准5.3.5 [expr.delete] p2
)
现在,通常我认为首先列出的内容会覆盖稍后列出的内容,但是void*
下面的空指针呢?
c - 我们如何检查指针是否为 NULL 指针?
我一直认为只需简单地if(p != NULL){..}
完成这项工作。但是读完之后了这个 Stack Overflow question之后,似乎没有。
那么,在吸收了关于NULL 指针可以具有非零值的问题的所有讨论之后,检查 NULL 指针的规范方法是什么?
c++ - c++ 函数式编程 ( boost::phoenix && boost::spirit) 测试指针占位符中的空指针
所以,我有以下精神业力规则体:
这导致来自 g++ 的相当长的错误消息(有帮助)以:
这是有效的 C++:
我想尝试boost::phoenix::static_cast_<_r1_type *>(0)
转换_r1_type
为整数(是的,这是错误的,这只是一个实验)。
问题:
当点为零时,如何使用精神 eps 构造对占位符执行指针测试以防止规则体评估?
与所有“C++ 函数式编程库使用”问题一样,我希望答案让我感觉自己像个傻瓜。
答案
Ildjam 的观点直接回答了我的问题。我的问题有两个问题;上面有个间接问题。这与 PEG 中的条件有关。我想表达的应该这样写:
我使用语义动作主体(在 [] 块中指定)来表达语法的条件部分。奇怪的是,虽然我之前写过条件 PEG 语法,但我只是犯了一个错误,导致了第二类问题。
因此, eps(_r1) 可以解决问题,第二种类型的编译问题与问题无关。
c++ - 如何防止从 `0` 构造 std::string 引起的麻烦?
编译器(g++ 4.4)显然解释0
为char* NULL
,并s
通过调用string::string(const char*, const Allocator &a = Allocator())
. 这当然没用,因为NULL
指针不是指向 c 字符串的有效指针。当我尝试调用时不会出现这种误解foo(1)
,这有助于产生编译时错误。
当我不小心调用类似的函数时,是否有可能在编译时出现这样的错误或警告
with bar(0)
, 忘记 the string
, 真正的意思 to have i=0
?