【发布时间】:2017-04-27 10:36:33
【问题描述】:
我有来自 C++ 书籍的这段代码 sn-p:
#include<stdio.h>
#include<stdlib.h>
struct S1
{
const char *s;
int i;
struct S1 *slp;
};
main()
{
static struct S1 a[]= {{"abcdef", 1, a+1},
{"ghijkl", 2, a+2},
{"mnopqr", 3, a} };
struct S1 *p = a;
printf("a[0].s = %s p-> = %s a[2].slp->s = %s \n", a[0].s, p->s, a[2].slp->s);
for(int i=0; i<3; i++)
{
printf("--a[i].i = %d ", --a[i].i);
printf("++a[i].s[3] = %c \n", ++a[i].s[3]);
}
}
使用 Dev C++ v5.11,我无法编译它并出现错误代码:
[Error] increment of read-only location '*(a[i].S1::s + 3u)'
@Corristo 评论的解决方案有效。
感谢大家的帮助。下次我会得到更好的IDE和书籍。谢谢,@Tomaz-Canabrava。
【问题讨论】:
-
我觉得这本 C++ 书根本就不是 C++……
-
这看起来更像是 90 年代初的 C,而不是真正的 C++。你应该得到一本更好的 C++ 书。
-
s是const char*,那么s[3]是const char,你不能对它执行++。 -
这真的是一本 C++ 书吗?封面上有两个+号吗?如果是这样,我建议你把这本书埋了(别烧了,没必要助长全球变暖),让自己变得更好。
-
你能提供任何参考书名、作者、页码等吗?