(参考书籍C Language Demystified)
一、首先看看下面的这个代码
最后输出结果
分析:
很明显第一条语句中st代表的是字符串的首地址,所以能输出字符串的内容;
第二条语句的st[5]代表第六个元素的地址;
而第三条因为%s输出字符串,若要输出you go home?首地址
应该&st[5];
甚至可以像这样printf(&st[5]);
因此我们得注意字符的地址与字符串地址的不同!!!
二、scanf与空格
看看结果
为什么出现这样的情况?原因就是scanf遇到空格就会停止!!!
解决方案也很简单:
①要么使用像书中介绍的gets(st);
②要么采用我老师上课讲的这种形式scanf("%[^\n]",st);
三、不输出数组内容
想必大家都遇到过这种情况,那就是在printf中加入了&取地址符;
大家记得不要加!!!
🌂Add:当i=0时,&a[0]和a是一样的;