如果连续声明两个数组a[n]和b[n],a[n]的地址和b[0]的地址一样了。
这样如果做一些输出,比如puts(a),就会把a和b都输出了。
【请问】
这是怎么回事?如何避免这样的问题?
【代码】
gcc 版本 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
代码: 全选
#include<stdio.h>
main()
{
char a[5],b[5];
int i;
for (i = 0;i < 5;i++){
a[i]='a';
b[i]='b';
}
puts(a);
}
>输出:aaaaabbbbb
【By the way】
我是在我手机上用tcc编写c时发现这个问题的,tcc要颠倒声明顺序,先声明b数组,再声明a数组。
这样才能让b紧跟在a后,形成&a[5]与&b[0]相同。
望各位前辈指教,多谢了^_^