C++ Struct Puzzle无法编译

-1 c++ struct dev-c++

我有一个来自C++书籍的代码片段:

#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]);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用Dev C++ v5.11,我无法使用错误代码编译它:

[Error] increment of read-only location '*(a[i].S1::s + 3u)'
Run Code Online (Sandbox Code Playgroud)

由@Corristo评论的解决方案有效.

感谢大家的帮助.我下次会得到更好的IDE和书籍.谢谢,@ Tomaz-Canabrava.

Tom*_*ava 6

停止使用Dev C++

  • 这是一个在2000年初制作的不合标准的IDE,绝不应该被任何人,大学和学生使用.简单地说:它比其他任何东西都有更多的错误.(不幸的是,它是几乎所有巴西大学的首选IDE,感叹.)

获得一本正确的C++书籍

  • 如果它说它会教你任何低于C++ 11的东西,它就不是一本正确的C++书,它会教你通常错误的 c ++来自中世纪(C++ 11之前)

不要使用与Turbo C++相关的任何内容

  • 说真的,大学仍在使用它来教授C++.

很多好的和免费的书籍,编译器和IDE,因为你在Windows中我会推荐其中一个免费的IDE:

  • Microsoft Visual Studio Express
  • Qt Creator
  • Eclipse CDT

这至少会给你一个现代的C++,而不是石器时代.好学习.