开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2008
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
出自The C Puzzle Book 里面的范例
#include "stdio.h"
struct S1{
char *s;
int i;
struct S1 *s1p;
};
int _tmain(int argc, _TCHAR* argv[])
{
static struct S1 a[] = {
{ "abcd", 1, a+1},
{ "efgh", 2, a+2},
{ "ijkl", 3, a}
};
struct S1 *p = a;
int i;
for( i=0; i<2; i++)
{
printf("++a[i].s[3]= %c", ++a[i].s[3]);
}
return 0;
}
这是我们公司同事问的问题
我把这段程式码放进VC++专案
编译的时候没有问题
但是执行结果却会出现
于 0x000d141b 的 S2.exe 中发生未处理的例外状况: 0xC0000005:
写入位置 0x000d574f 时发生存取违规
问题出在 printf("++a[i].s[3]= %c", ++a[i].s[3]);
因为这是从书本上照打的
我也比对几个版本所以先排除书本出错的的可能性
不知道有哪位大大可以解释一下出错的原因?
如果有相关资料让我能够深入阅读会更加感谢
小弟我是做数学算法的开发
对于资工的软硬件架构并不是非常了解
还请各位大大见谅