5
|
user8185371 · 技术社区 · 8 年前 |
![]() |
1
6
“为什么”是:“因为字符串文字是特殊的”。字符串文字作为程序本身的常量部分存储在二进制文件中,并且
对于其他类型,没有等效的特殊行为,但您可以通过生成命名静态常量并使用该常量初始化指针来获得相同的基本解,例如。
的影响
|
![]() |
2
1
你 几乎
然而,只有
在C中(以及作为某些C++编译器的扩展,包括Clang和GCC),可以将复合文字强制转换为数组类型,如下所示:
然而,这几乎是不正确的。它在全局范围内工作,并作为函数参数,但如果您尝试用它初始化自动存储的变量(即函数中的变量),您将得到一个指向即将过期位置的指针,因此您将无法将其用于任何有用的用途。 |
![]() |
3
1
这种特性存在于C中,并被命名为 复合文字 .
但是,C++不支持C中的此功能。 与字符串文字相比有一个区别。字符串文字的静态存储持续时间与它们出现的位置无关,而复合文字的静态保存持续时间或自动保存持续时间取决于它们出现的地方。
在C++中,与此功能接近的是
|
![]() |
4
0
因此:
与以下内容完全相同:
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 5 月前 |