|
|
1
12
编译器可以自由使用字符串实例化,即通过避免重复相同的数据来节省内存。2
然而,你不应该把这当作规则。这个
|
|
|
2
11
该代码在C语言中是合法的,它可能不会产生您期望的结果。
字符串文本的类型为
在比较中,
比较字符串文字的地址,这些地址可能相等,也可能不相等。 它相当于:
C标准不能保证具有相同内容的两个字符串文字的地址相等(
6.4.5,字符串文字 ( C11, draft )
同样,这种比较
相当于:
在这种情况下,字符串文本将位于不同的位置,指针比较失败。因此,在这两种情况下
相反,如果您使用 阵列 ,它将不起作用:
不同的是,当用字符串文字初始化数组时
复制
到阵列中。阵列
|
|
|
3
0
它是复制/比较字符串的地址,而不是字符串的内容。 比较地址是有效的操作 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 1 年前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 2 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 2 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 2 年前 |