关于这个c程序输出的困惑

时间:2013-06-10 03:44:24

标签: c

我刚接触C编程,因为我刚开始学习编程。我在看下面的程序 -

main( ) 
{ 
 printf ( 5 + "Good Morning " ) ; 
}

我发现上述程序的输出是Morning。通过简单的计算看起来,它跳过了5个字符。但我在想为什么它会跳过前五个字符?

有人能详细解释一下这个程序吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

这称为指针算法。

字符串文字"Good Morning"存储在内存中,当您使用它时,您将获得指向第一个字符的指针。将5添加到该值会在字符串中指定五个字符。

printf函数看到的所有内容都是一个指针char const * fmt,所以你可以给它任何你想要的东西......但你需要确保你的程序可以使用你的内存该地址,并指向以null结尾的字符数组。

答案 1 :(得分:0)

"Good Morning "const char*。它是一个指针 - 一个内存位置 - 放置此字符串。 “早安”+5是指向此位置后的5个地方的指针。 +是对称的,因此"Good Morning " + 5等于5 + "Good Morning "