1

我刚开始学习编程,所以我是 C 编程的新手。我在看下面的程序-

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

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

有人可以详细解释一下这个程序吗?谢谢您的帮助。

4

2 回答 2

4

这称为指针算术。

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

printf函数看到的只是一个指针char const * fmt,所以你可以给它任何你喜欢的东西......但是你需要确保你的程序被允许使用该地址的内存,并且它指向一个以空值结尾的数组的字符。

于 2013-06-10T03:47:12.350 回答
0

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

于 2013-06-10T03:48:01.983 回答