如何取消引用字符串文字?

Atr*_*rox 5 c pointers constants

以下代码将字符 S 与字符串文字的第一个元素进行比较"Stack"

根据我的理解,只能取消引用指针,但是这个字符串文字像指针一样工作吗?

#include <stdio.h>
int main() {
    if('S'==*"Stack")
        printf("equal");
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*hil 9

“字符串文字”是源代码中事物的名称,就像“关键字”是源代码中的关键字int或关键字的名称一样switch

当源代码中出现字符串文字时,会创建一个字符数组并填充字符串文字的字符,加上一个终止空字符 (C 2018 6.4.5 6)。

当在表达式中使用数组时,除了作为 的操作sizeof数、一元的操作数&或作为用于初始化其他数组的字符串文字之外,它会自动转换为指向其第一个元素的指针(C 2018 6.3.2.1 3)。

因此,当"Stack"出现在源代码中时,它会产生一个指向“S”的指针,带有“S”值的*"Stack"achar也是如此。

类似地,"Stack"[1]char具有“t”值的a 。