内存分配给数组的原则问题
#include < iostream.h >
#include < stdlib.h >
int main()
{
char str1[80];
char str2[4]={'G', 'o', 'o', 'd'};
cout << "请输入一行字符串:" << endl;
cin.getline(str1, 80);
cout << "str1=" << str1 << endl;
cout << "str2=" << str2 << endl;
system("PAUSE");
return 0;
}
输入:I am a student.
结果:
str1=I am a student.
str2=GoodI am a student.
原因是str2后面没有字符串结束标志'\0',程序把紧随其后的I am a student.也输出来了;
可是我就不明白为什么str1在内存中一定是接着str2后面呢?我改变str1[80]和str2[4]的赋值顺序,得到同样的结果,如果改变两个数组的定义顺序,就是先定义数组str2[4]后定义str1[80],则得到的结果是:
str1=I am a student.
str2=Good?(后面还有一个上下箭头的符号)
是什么意思?内存空间到底是按什么原则分配给数组的?