- 主题:c++太垃圾
为啥定义char[0]数组啊?定义个char*指针不香?
【 在 hgoldfish 的大作中提到: 】
: 这是一个 c 的技巧,定义 char[0] 数组。但实际长度另说。
--
FROM 42.3.19.*
估计有些人喜欢用奇技淫巧,强制的话,这帮人要不爽了
【 在 mrunmatched 的大作中提到: 】
: 我知道可以选,但是为什么不强制呢?非要留个口子,什么考虑?
: 发自「今日水木 on HMA-AL00」
--
FROM 42.3.19.*
你这个也算是奇技淫巧,哈哈哈
【 在 hgoldfish 的大作中提到: 】
: 因为 char[0] 和 char* 不一样啊。
: 前者在申请内存的时候这样:
: struct example {
: ...................
--
FROM 42.3.19.*
感觉这些奇技淫巧还是应该放弃
用其它的方式一样可以实现目的,执行效率没差别,还有助于阅读,缺点只是多几行代码而已
【 在 z16166 的大作中提到: 】
: char[0]或者char[1]是很常见的技法,这是C带来的,C++继承了而已。
: 这是C/C++的“direct hardware mapping”这个语言特性决定的,bit fields、alignment、pack这几个feature也是。
--
FROM 103.135.248.*
有些懂了,多谢赐教!
【 在 hyperLee 的大作中提到: 】
: 这两种区别老大了,一个本身就是地址,不占内存,一个还得占一个指针长度。
: 处理变长对象,堪用的还真的只能用零长数组。
: 不然你看看写tcp协议,到处是零长数组
: ...................
--
FROM 103.135.248.*
你想通了你就直接说
用一副教师爷的口气说话前先想想自己有几斤几两
【 在 woodxiang 的大作中提到: 】
: 好好想想有啥区别。
--
FROM 42.3.19.*
undefined behavior
【 在 mrunmatched 的大作中提到: 】
: ub是啥意思?
: 发自「今日水木 on HMA-AL00」
--
FROM 42.3.19.*
我脑子被门夹了才干你说的这一行
【 在 woodxiang 的大作中提到: 】
: 如果你在问这个问题之前没有想过这个问题的话,听我的,你不适合这一行。
--
FROM 42.3.19.*