C语言字符数组简单问题错哪?能这样写吗

C语言 码拜 10年前 (2015-05-11) 859次浏览 0个评论
 

#include <stdio.h>
main ()
{
char c[10];
c[0]=””I””;c[1]=”” “”;c[2]=””a””;c[3]=””m””;c[4]=”” “”;c[5]=””h””;c[6]=””a””;c[7]=””p””;c[8]=””p””;c[9]=””y””;
printf (“%c\n”,c[10]);
}

“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,搬手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?

其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。

20分
既然是字符数组(不是字符串),你就应该在for循环里面打印字符。
此外printf (“%c\n”,c[10]);已经越界了,最大就c[9]
越界了,你可以打印c看看
刚进大一。。。定义【10】 确实只到【9】。
不会报错,会输出不确定的值!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C语言字符数组简单问题错哪?能这样写吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!