Member 13057504 Ответов: 1

Причина ошибки?


#include<iostream>
using namespace std;
typedef struct student stud
{
    int rno;
    stud *s;
}
int main()
{
    s->rno=30;
    cout<<s->rno;
    return 0;
}


Что я уже пробовал:

эта программа показывает ошибку, потому что мы не можем дать альтернативное имя памяти до ее существования.Если это так, то мы не могли бы использовать typedef даже после определения структуры, так как структурная память создается при создании переменной?
мой вопрос таков:
можно ли создать саморефлексивную структуру с помощью ключевого слова typedef?

0x01AA

"можно ли создать саморефлексивную структуру с помощью ключевого слова typedef":
Да, это возможно. Но ваш код отвечает за выделение / освобождение stud *s;

Richard MacCutchan

Вы не объявили переменную с таким именем s.

1 Ответов

Рейтинг:
1

CPallini

Программа показывает ошибки, потому что есть ошибки...
Пожалуйста, обратите внимание, что вам это не нужно typedef structв C++.
Попробуй

#include<iostream>
using namespace std;

struct stud
{
    int rno;
    stud *s;
};

int main()
{
    stud * s = new stud();
    s->rno=30;
    s->s = nullptr;
    cout << s->rno <<endl;
    delete s;

    return 0;
}