我不熟悉C 语法
C++ syntax I am not familiar with
我看到一些我不熟悉的C 语法:
fftfilt *mark_filt;
.
.
.
mark_filt = new fftfilt( ... ); // I left out arguments for the constructor.
.
.
.
mark_filt = (fftfilt *)0;
.
我不明白什么(fftfilt *)0是指还是?也许一直使用C 的人可以向我解释一下?
谢谢霍华德
这是代表NULL
的旧方法,这通常只是定义为0
的宏。相反,您应该更喜欢
mark_filt = nullptr;
虽然我希望在那之前有一个new
有人叫delete mark_filt
第一个注释是正确的;这是C 的Pre 11方法,可显式地抛出一个指向正确类型的空指针。而且您是正确的,相当于mark_filt = NULL;
,有点。
c 对各种转换执行隐式类型促销,但这些促销是有限的。对于指针,C 11方法是使用NULL
或(pointer_type *)
铸件。NULL
本身具有特定于实现的定义,并在标准C 标题中以不同的方式实现(我相信Stdlib)。NULL
的两个常见实现是:
#define null 0
#define null(((void *)0)
这些分析取决于编译器,但是如果分配给非分支类型,则第二个将失败。它将被隐式地投入到正确的类型上,因为它没有指定指向的记录类型(即void
本质上是一个空类型,void *
是指向null类型的指针,或者是未指定的 类型)。
在C 11及更高版本中,使用mark_filt = nullptr
更常见,但是此代码会编译。
MSDN网站对此有一些很好的文档(无需插头):
- http://en.cppreference.com/w/cpp/types/null
- http://en.cppreference.com/w/cpp/language/implitic_conversion
相关文章:
- 为什么用于获取有关名称的输入的语法不起作用?
- "我该如何展示cout<<"发烧";因为我不熟悉字符串数组,它也卡在选择部分?
- C++状态机,继承了具有语法不正确的成员值的类
- 精神语法不会编译:函数模板参数错误?
- 我不熟悉C 语法
- boostqi::语法不更新使用spirit/fenix的valuetype
- 我的代码的第二部分没有运行,我不熟悉使用类
- 在一个不熟悉的大型软件项目中,我应该如何调试SIGFPE
- C++中不熟悉的符号 [=]
- 不熟悉C++语法,而我正在尝试用C++研究数据结构
- 运算符重载中的C++语法不明确
- 为什么 (std::cin >> foo) 语法不起作用?
- C预处理文件中这些不熟悉的行是什么
- 我的代码语法不正确的地方
- 不熟悉使用'new'进行内存分配 (C++)
- c++ 11 for循环语法不能正常工作
- 在c++中真的不可能跳过带有默认实参的模板形参吗?为什么语法不这么认为?
- 不熟悉c++指针,需要帮助
- Boost::spirit::qi::parse语法不能正常工作
- 助推精神语法不一致的行为