我刚开始学习编程,所以我是 C 编程的新手。我在看下面的程序-
main( )
{
printf ( 5 + "Good Morning " ) ;
}
我发现上面程序的输出是Morning
. 通过简单的计算,它看起来已经跳过了开始的 5 个字符。但我在想为什么它会跳过前五个字符?
有人可以详细解释一下这个程序吗?谢谢您的帮助。
我刚开始学习编程,所以我是 C 编程的新手。我在看下面的程序-
main( )
{
printf ( 5 + "Good Morning " ) ;
}
我发现上面程序的输出是Morning
. 通过简单的计算,它看起来已经跳过了开始的 5 个字符。但我在想为什么它会跳过前五个字符?
有人可以详细解释一下这个程序吗?谢谢您的帮助。
这称为指针算术。
字符串文字"Good Morning"
存储在内存中,当你使用它时,你会得到一个指向第一个字符的指针。向该值添加 5 会将指针添加到字符串中的五个字符。
该printf
函数看到的只是一个指针char const * fmt
,所以你可以给它任何你喜欢的东西......但是你需要确保你的程序被允许使用该地址的内存,并且它指向一个以空值结尾的数组的字符。
"Good Morning "
是一个const char*
。它是一个指针 - 一个内存位置 - 放置此字符串的位置。“早安” + 5 是指向此位置后5 个位置的指针。+
对称,所以"Good Morning " + 5
等于5 + "Good Morning "
。