为什么输出会是这样?

 

问一下,为什么输出的时候总会跟着这个
 

字符组越界了,不过不是删{},{}对你字符组无影响。

在C语言中,字符串后面会自动接字符串结束符'\0',所以你的name字符组实际上是'j'   'h'   'u'  's'  't'  'i'  'n'  '\0'总共8个字符

address字符组实际上是'a'  'b'  'c'  'd'  'e'  'f'  'g'   'h'  'i'  'j'   '\0'总共11个字符,所以你在定义的时候应该定义字符组大小为8和11。

只有在字符串后面才会自动接'\0'!!!你单个输入字符作为字符组元素是不会接'\0'的。

你可以用sizeof("jhustin")输出,他的值应该是8,因为sizeof()读取的是实际占的内存大小

strlen("jhustin")输出的是7,因为strlen()函数返回的是'\0'之前的所有字符数量

越界了,把{}删掉

回复Rotch的:来,你解释为啥报错,按你的说法我去掉了吧,为啥还报错

 

回复小白小白你好菜的:

这么写是最标准的;

像你那么赋值 {"123456"} 只是在运行上没有问题,实际上是把多余的值顺序排到其他地址上。你那么做只是运行结果没问题,但是原理你完全弄错了。我希望你弄懂C语言最基本的语法,不要纸上谈兵,多去开发开发项目,练好基本功