字符串文字在 C 中的内存中是连续的

问题描述 投票:0回答:1

遇到了这个,取消引用

a-3
内存地址给了我
b
中存在的字符。

char *b = "welcome";
{
    char *a = "home";
    printf("%c", *(a-3));
}

找不到任何相关标准来支持这一点。

尝试使用在线 C 编译器来编译它。它返回一个存储在

b
中的字符。

想了解如何执行此操作

c
1个回答
0
投票

找不到任何相关标准来支持这一点

那是因为没有。由于您越界访问

"home"
,该程序具有未定义的行为,这意味着该程序几乎可以执行任何操作,包括它在您的情况下执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.