对于这个程序,我得到一些奇怪的输出?
char str[]= "almost every programmer should know memset!";
memset(str,'*',5);
puts(str);
期望的输出: *****几乎每个程序员都应该知道memset! 我观察到的: *****每个程序员都应该知道memset!
对于6的倍数,只显示正确的输出。
答案 0 :(得分:6)
您看到的输出是正确的:
memset()
会为数组'*'
的前5个字节设置str
。字符串的其余部分保持不变。
答案 1 :(得分:4)
在大多数情况下,数组名称会衰减为指向第一个元素的指针,这意味着memset()
调用会将{5}个字节设置为'*'
,从str
的第一个元素开始。换句话说,它将用'*'
覆盖前5个字母,输出将为:
*****t every programmer should know memset!