关于结构数据中的一点不理解的地方,求解答。

a1317296227 2017-12-25 11:36:04
先附上代码:
#include <iostream>
#include <conio.h>
#include <iomanip> //限定符setw()头文件
#include <cstring>
using namespace std;
struct Subject{ //定义结构Subject
char id[8];
char caption[20];
char room[10];
}study[3]={ //声明一个结构变量study,并将数据成员以数组方式初始化
"A001", "会计学", "MS6708",
"A002", "成本会计", "MS7321",
"A003", "人力资源", "MS4708"
};
void main()
{
int red;
cout << " 代号\t 科目\t 教室" << endl;
cout << "-----------------------------------" << endl;
for(red = 0; red < 3; red++)
{
cout << setw(5) << study[red].id
<< setw(10) << study[red].caption
<< setw(8) << study[red].room << endl;
}
getch ();
}

再附上一张执行截图:

从图中可以看出,所有的输出都是按照代码中的模式输出的,这个程序是抄的书上的,但是这里个人遇到了一点疑惑,为什么结构中的数组值刚好能满足要求,这里的值怎么对应,如下面的代码:
char id[8];
char caption[20];
char room[10];

通过查看我们看到id的数组就是科目,但是科目中只有4个字符,这里我将id[8]改为id[4],编译就出错,编译结果如下:

改为id[6]却能编译通过,在id[8]的时候为什么就能刚好满足要求,不会出现编译执行的结果异常的情况,这里字符数组的长度是如何判断的,翻了下书,没有找到,感觉找书可能很久都难以找到,特来问下大神,大神比书有用。
求大神指教,谢谢~~
...全文
323 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-12-26
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧